无法将 UISearchBar 的半透明属性设置为 NO



我正在尝试设置没有半透明的UISearchBarbarTintColor。但是,设置translucent属性似乎没有任何作用。我在这里的一个简单的Xcode项目中复制了这个问题。

self.searchDisplayController.searchBar.translucent = NO;
self.searchDisplayController.searchBar.barTintColor = [UIColor redColor];

上面的红色与不半透明的UIViews中的[UIColor redColor]不同。我知道在搜索栏上设置背景图像的解决方法,但上面的代码应该也能工作。

我下载了您的代码并找到了的解决方案,添加了一个方法名为removeUISearchBarBackgroundInViewHierarchy,并将searchBar.backgroundColor设置为redColor.

- (void)viewDidLoad
{
    [super viewDidLoad];
    self.searchDisplayController.searchBar.translucent = NO;
    [self removeUISearchBarBackgroundInViewHierarchy:self.searchDisplayController.searchBar];
    self.searchDisplayController.searchBar.backgroundColor = [UIColor redColor];
}
- (void) removeUISearchBarBackgroundInViewHierarchy:(UIView *)view
{
    for (UIView *subview in [view subviews]) {
        if ([subview isKindOfClass:NSClassFromString(@"UISearchBarBackground")]) {
            [subview removeFromSuperview];
            break; //To avoid an extra loop as there is only one UISearchBarBackground
        } else {
            [self removeUISearchBarBackgroundInViewHierarchy:subview];
        }
    }
}

请在搜索栏中这样设置图像,这样可以解决您的问题。

[[UISearchBar appearance] setBackgroundImage:[UIImage imageNamed:@"red"]];

谢谢。

对于派对来说可能为时已晚,

然而,我为Swift 3做了一个非常简单而漂亮的扩展,它允许您毫无问题地使用半透明属性。

它不涉及在对象内使用私有API或危险的演练。

你可以从这个Github存储库下载它。

相关内容

  • 没有找到相关文章

最新更新