首先
我找遍了,似乎找不到任何信息......
(我遇到了许多根本不起作用的事情......)
终于在详细的英文文献中找到了,我会保留下来,希望以后有机会。
关于 SwiftUI 中的可搜索
searchable
是iOS15新增的易于实现的搜索字段。
关于这种情况
有一个参数placement
,您可以在其中指定实现位置。您可以通过设置.navigationBarDrawer()
来设置导航栏中的搜索栏。
相比UIKit
,在不自定义导航的情况下实现搜索栏我很感激。
struct DemoView: View {
@State var text = ""
var body: some View {
NavigationView {
// Some View
}
.searchable(
text: $text,
placement: .navigationBarDrawer(displayMode: .always),
prompt: Text("placeholder")
)
}
}
当我实现这个时,我想详细定制它,所以我将描述它。
执行
我将列出适用于图片的内容。
本次介绍的方法操作appearance
。
因为我不想使用包装UISearchBar
的自定义视图。
既然会体现在所有的屏幕上,如果要单独实现的话,我觉得不符合要求。
更改图标图像和颜色
例如,我使用 SF Symbols (person
) 作为图像。
let person = UIImage(systemName: "person")
let image = person?.withTintColor(.red, renderingMode: .alwaysOriginal)
UISearchBar.appearance().setImage(image, for: .search, state: .normal)
更改搜索栏的背景颜色
UISearchBar.appearance().backgroundColor = .blue
更改搜索栏中的文本字段背景颜色
UITextField.appearance(whenContainedInInstancesOf: [UISearchBar.self]).backgroundColor = .purple
更改搜索栏的文本颜色
我很难找到这些信息。
在tintColor
和barTintColor
在appearance
不适用.
NavigationView {
// Some View
}
.searchable(
text: $text,
placement: .navigationBarDrawer(displayMode: .always),
prompt: Text("placeholder")
)
.foregroundColor(.white) // <- here
您可以通过设置foregroundColor
来更改颜色。
但是,由于此实现会影响此屏幕上的View
,因此需要用颜色单独覆盖NavigationView
下的View
。
在最后
这次我把我需要的东西放在一起,UITextField.appearance(whenContainedInInstancesOf: [UISearchBar.self])
我确定您还可以自定义其他内容。
虽然它在过去是作为一个错误提出的,但似乎appearance
的自定义可能不适用于某些操作系统。请注意,如果操作系统升级,则无法保证运行 mm
原创声明:本文系作者授权爱码网发表,未经许可,不得转载;
原文地址:https://www.likecs.com/show-308622885.html