【问题标题】:How to customize UISearchBar in iOS7 (Clear button)iOS7中如何自定义UISearchBar(清除按钮)
【发布时间】:2014-02-06 12:02:30
【问题描述】:

我正在尝试自定义 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

提前谢谢你。

【问题讨论】:

  • 这很奇怪,但您不能使用相同的图像从正常到高度光,尝试更改第二次调用的图像
  • @ShamsAhmed 正如你所说,如果图像相同,它就不起作用。谢谢你:)

标签: ios cocoa-touch ios7 uisearchbar


【解决方案1】:

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

【讨论】:

    【解决方案2】:

    来自UISearchBar上的文档:

    状态

    控制状态。

    有效状态为UIControlStateNormalUIControlStateDisabled

    这里好像不支持UIControlStateHighlighted

    【讨论】:

    • @malex “它可以工作”和“它被支持”之间是有区别的。苹果明确说明了哪些状态是有效的。它现在可能工作,但它很容易在未来的 iOS 版本中中断。
    • 我明白了。但在我的实践中,我更喜欢将问题解决为“它有效”,因为 iOS 评估表明,许多正式不受支持的功能寿命很长 :)
    猜你喜欢
    • 1970-01-01
    • 2011-10-02
    • 1970-01-01
    • 2018-09-17
    • 1970-01-01
    • 1970-01-01
    • 2010-12-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多