如何在iOS7中自定义UISearchBar(清除按钮)

时间:2014-01-17 08:28:26

标签: ios cocoa-touch ios7 uisearchbar

我正在尝试自定义UISearchBar清除按钮。我可以在正常状态下为图标设置自定义图像,但是当我按下按钮时,我不知道如何为状态设置相同的图像。它始终具有系统外观。我尝试为所有可用状态设置相同的图像,但未能获得任何结果。

for iOS7:

    [self.searchBar setImage:[UIImage imageNamed:@"icon_X_black.png"] forSearchBarIcon:UISearchBarIconClear state:UIControlStateNormal];
    [self.searchBar setImage:[UIImage imageNamed:@"icon_X_black.png"] forSearchBarIcon:UISearchBarIconClear state:UIControlStateHighlighted]; /// doesn't work

我为UIControlStateHighlightedUIControlStateSelected设置相同内容时没有变化。是否可以在iOS7中自定义此按钮?在iOS6中,当我为UIControlStateHighlighted设置相同的图标时,它可以正常工作。

for iOS6:

    [self.searchBar setImage:[UIImage imageNamed:@"icon_X_black.png"] forSearchBarIcon:UISearchBarIconClear state:UIControlStateNormal];
    [self.searchBar setImage:[UIImage imageNamed:@"icon_X_black.png"] forSearchBarIcon:UISearchBarIconClear state:UIControlStateHighlighted]; /// it works

提前谢谢。

2 个答案:

答案 0 :(得分:6)

这是iOS7非常奇怪的行为,但如果你想为两个状态设置相同的图像,解决方案是代码中语句的相反顺序

[self.searchBar setImage:[UIImage imageNamed:@"icon_X_black"] forSearchBarIcon:UISearchBarIconClear state:UIControlStateHighlighted];
[self.searchBar setImage:[UIImage imageNamed:@"icon_X_black"] forSearchBarIcon:UISearchBarIconClear state:UIControlStateNormal];

您也可以使用不同的名称复制icon_X_black文件并使用任何订单。

答案 1 :(得分:2)

来自UISearchBar的文档:

  

状态

     

控制状态。

     

有效状态为UIControlStateNormalUIControlStateDisabled

这里似乎不支持UIControlStateHighlighted