当前位置: 首页 > 面试题库 >

如何更改UISearchBar占位符和图像色调颜色?

吕志诚
2023-03-14
问题内容

我已经尝试了几个小时的搜索结果,但无法弄清楚。也许是不可能的。我正在尝试更改占位符文本和UISearchBar的放大镜的色调颜色。如果这很重要,我只针对iOS
8.0+。这是我的代码及其现在的样子:

let searchBar = UISearchBar()
searchBar.placeholder = "Search"
searchBar.searchBarStyle = UISearchBarStyle.Minimal
searchBar.tintColor = UIColor.whiteColor()

忙碌的猫

我希望搜索和放大镜是白色,或者是深绿色。


问题答案:

如果您有可以使用的自定义图像,则可以使用类似于以下内容的方式设置图像并更改占位符文本颜色:

[searchBar setImage:[UIImage imageNamed:@"SearchWhite"] forSearchBarIcon:UISearchBarIconSearch state:UIControlStateNormal];

UITextField *searchTextField = [searchBar valueForKey:@"_searchField"];    
if ([searchTextField respondsToSelector:@selector(setAttributedPlaceholder:)]) {
    UIColor *color = [UIColor purpleColor];
    [searchTextField setAttributedPlaceholder:[[NSAttributedString alloc] initWithString:@"Search" attributes:@{NSForegroundColorAttributeName: color}]];
}

在该示例中,我使用了PurpleColor,而是可以使用该+ (UIColor *)colorWithRed:(CGFloat)red green:(CGFloat)green blue:(CGFloat)blue alpha:(CGFloat)alpha方法来创建自定义的深绿色。

编辑:我刚刚意识到你正在迅速写它…嗯。快速输入答案,这样我就不会只把答案留在Obj-C中了。

    searchBar.setImage(UIImage(named: "SearchWhite"), forSearchBarIcon: UISearchBarIcon.Search, state: UIControlState.Normal);

    var searchTextField: UITextField? = searchBar.valueForKey("searchField") as? UITextField
    if searchTextField!.respondsToSelector(Selector("attributedPlaceholder")) {
        var color = UIColor.purpleColor()
        let attributeDict = [NSForegroundColorAttributeName: UIColor.purpleColor()]
        searchTextField!.attributedPlaceholder = NSAttributedString(string: "search", attributes: attributeDict)
    }

斯威夫特3.0

    var searchTextField: UITextField? = searchBar.value(forKey: "searchField") as? UITextField
    if searchTextField!.responds(to: #selector(getter: UITextField.attributedPlaceholder)) {
        let attributeDict = [NSForegroundColorAttributeName: UIColor.white]
        searchTextField!.attributedPlaceholder = NSAttributedString(string: "Search", attributes: attributeDict)
    }


 类似资料:
  • 问题内容: 我想更改TextField的占位符颜色,但是找不到它的方法。 我尝试设置和,但它不会更改占位符的颜色。 这是代码: 也许还没有API? 问题答案: 目前还没有api。 但您可以 : 自己使用和实现占位符: 现在,您可以像老板一样使用任何类型的编辑。 -自定义TextField 您总是可以创建自己的custom,以在所有地方使用: 用法 (带占位符):

  • 问题内容: 聚焦输入字段时如何更改占位符的颜色?我使用此CSS设置默认颜色,但是如何更改焦点? 问题答案: 试试这个,这应该工作:

  • 我从服务器接收图像,然后根据用户选择的颜色,图像颜色将发生变化。 我尝试了以下方法: 我得到了与我的目标相反的结果(UIImage外部的白色是用所选颜色着色的)。 出了什么问题? 在这个问题上我也需要这样做,提供的解决方案不能解决我的问题。如何更改iOS和WatchKit中的图像颜色

  • 问题内容: 我有一个实现深蓝色的设计,因为默认情况下,占位符文本为深灰色,所以我几乎无法分辨出占位符文本的含义。 我已经用谷歌搜索了这个问题,但是我还没有想出使用Swift语言而不是Obj-c的解决方案。 有没有一种方法可以使用Swift 更改占位符文本的颜色? 问题答案: 您可以使用 属性字符串 设置占位符文本。通过:传递所需的颜色: 对于Swift 3+,请使用以下命令: 对于Swift 4.

  • 我有一个实现深蓝色的设计,因为占位符文本默认是深灰色,我几乎看不出占位符文本说了什么。 当然,我已经在谷歌上搜索了这个问题,但我还没有找到一个解决方案,因为我使用的是Swift语言,而不是Obj-c。 有没有办法使用Swift更改中占位符文本颜色?

  • 问题内容: 如何更改a的文本颜色? 问题答案: 您必须访问UISearchBar内部。您可以通过使用 Swift 3更新