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



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

对于 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设置相同的图标时,它可以正常工作。

对于 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

提前谢谢你。

这是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文件并使用任何顺序。

来自UISearchBar的文档:

控件状态。

有效状态为 UIControlStateNormalUIControlStateDisabled

这里似乎不支持UIControlStateHighlighted

最新更新