[英]Change UISearchBar magnify icon color and position
我有一个 UISearchBar,我想更改初始放大图标的位置(出现在 UISearchBar 中间的那个)以及颜色或图标。
到目前为止,我更改了色调和图标图像。
但是,只有当我在模拟器上测试应用程序时才会显示新图标,但在实际设备(均运行 iOS 9.3)上它仍然显示默认图标。
UISearchBar.appearance().setImage(UIImage(named: "SearchbarIcon"), forSearchBarIcon: UISearchBarIcon.Search, state: UIControlState.Normal)
至于放大图标的位置,我希望它在左侧,如果我激活 UISearchBar,它就会显示在那里。
我在这里找到了很多答案,许多提供的解决方案不适用于 iOS 8.0+ 或在 Objective-C 中,我在理解它们时遇到了一些问题。
我试图添加一个包含图标的自定义背景,但它显示在搜索栏的底部,而图标仍然存在:
如果我将 Y 的背景偏移更改为 -44(UISearchBar 的高度),背景显示正常,但我无法再输入,因为似乎整个文本字段都被向上推了。 我还尝试将 SearchText 的垂直偏移更改为 44 以进行补偿,但没有运气。 老实说,我不确定“搜索文本”和“背景偏移”应该做什么,但我决定尝试一下。
有什么办法可以做到这一点吗? 或者也许是一种不同的方法?
您可以使用调整搜索栏图标的位置
func positionAdjustmentForSearchBarIcon(_ icon: UISearchBarIcon) -> UIOffset
@Michael - 感谢所有帮助。 我设法抓住了 UISearchBar 的 UITextField:
func customizeSearchBar()
{
for subview in srcRegimenSearchBar.subviews
{
for view in subview.subviews
{
if let searchField = view as? UITextField
{
let imageView = UIImageView()
let image = UIImage(named: "SearchBarIcon.png")
imageView.image = image;
imageView.frame = CGRectMake(0, 0, 0, 0)
/*imageView.frame = CGRectMake(100, 0, 20, 19)*/
searchField.leftView = imageView
searchField.leftViewMode = UITextFieldViewMode.Always
}
}
}
}
我想更改位置,因为我可以访问框架,但似乎只能修改顶部和高度,至少是我尝试的方式,因此我将高度和宽度设置为 0(我找不到方法使其为零或完全删除),我在 UISearchbar 的左侧添加了一个带有新图标的 UIImageView,并为色调添加了自定义水平偏移。
不是最好的解决方案,我敢肯定,但现在它有效。
您可以使用:
uiSearchBar.setPositionAdjustment(UIOffset, for: UISearchBar.Icon)
替换UIOffset
与期望的偏移值UIOffset(horizontal: CGFloatvertical: CGFloat)
和UISearchBar.Icon
与.search
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.