【问题标题】:iPad/iPhone uiSearchbar transparent backgroundiPad/iPhone uiSearchbar 透明背景
【发布时间】:2015-07-01 22:43:14
【问题描述】:

我知道以前有人问过(并解决了)这个问题,但这对我不起作用。 事实上,我已经解决了它,但是这个问题突然出现在我的头上。

我无法将UISearchBar 的背景设置为透明。 我一直在使用:

searchBar.backgroundColor = [UIColor clearColor];   
[[searchBar.subviews objectAtIndex:0] removeFromSuperview];

它工作得很好......但突然停止了。可能是因为我升级了 xcode-version 但我不确定。 我已经花了几个小时调查这个.. 有人在外面做这个吗?请指出我正确的方向。 谢谢大家!!!

最好的问候 T

【问题讨论】:

标签: iphone ipad uisearchbar


【解决方案1】:

尝试遍历您的子视图并寻找正确的类:

for (UIView *subview in searchBar.subviews) {
    if ([subview isKindOfClass:NSClassFromString(@"UISearchBarBackground")]) {
        [subview removeFromSuperview];
        break;
    }
}

我不确定,但我认为您不能假设索引 0 是背景视图。 上面的例子对我有用。

【讨论】:

  • 虽然它有效,但我可能不建议在生产中这样做。据我所知,API 中没有记录这一点,因此任何操作系统更新都有可能导致您的代码停止工作。我认为做你想做的最好的方法是编写你自己的搜索栏。
  • 感谢您的意见。我连接了一个新的 uisearchbar,突然旧的也能正常工作了.... 很奇怪!
【解决方案2】:

它仍然对我有用,所以也许你的代码中的其他东西把它搞砸了。您确定 searchBar 已正确设置(在 IB 中连接插座,在视图初始化后调用调用等...)? 最好的方法是打印出 [searchBar.subviews objectAtIndex:0] 的内容,它应该是一个 UISearchBarBackground 对象。 顺便说一句,由于 Apple 可以随时更改 UISearchBar 视图层次结构,因此您最好检查一下:searchBar.subviews.count 和

if ([[searchBar.subviews objectAtIndex:0] class] == NSClassFromString(@"UISearchBarBackground")) ...

在调用之前。

【讨论】:

  • 谢谢伙计。我连接了一个新的搜索栏,突然旧的搜索栏又开始工作了。奇怪的东西,但谢谢大家!
【解决方案3】:

您只需将 searchBarStyle 属性更改为 UISearchBarStyleMinimal。默认情况下它是 UISearchBarStyleProminent。您可以在情节提要或代码中更改它,如下所示。

self.yourSearBar.searchBarStyle = UISearchBarStyleMinimal;

【讨论】:

    猜你喜欢
    • 2011-02-24
    • 2013-04-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-03-08
    • 1970-01-01
    • 2023-03-05
    相关资源
    最近更新 更多