Ios UISearchBar无法移除UISearchBarBackground

Ios UISearchBar无法移除UISearchBarBackground,ios,uistoryboard,Ios,Uistoryboard,我已经尽了一切努力来让它工作。我像这样设置了一个自定义类 override func layoutSubviews() { super.layoutSubviews() clearBackgroundColor() // function in the question } private func clearBackgroundColor() { guard let UISearchBarBackground: AnyClass = NSClassFromStrin

我已经尽了一切努力来让它工作。我像这样设置了一个自定义类

override func layoutSubviews() {
    super.layoutSubviews()
    clearBackgroundColor() // function in the question

}

private func clearBackgroundColor() {
    guard let UISearchBarBackground: AnyClass = NSClassFromString("UISearchBarBackground") else { return }

    for view in self.subviews {
        for subview in view.subviews {
            if subview.isKind(of: UISearchBarBackground) {
                subview.alpha = 0
            }
        }
    }
}
我将背景色,BartinColor设置为。清晰。风格尽量简约。我疯了。我设置了断点以确保找到搜索栏背景。我也尝试过subview.removeFromSuperview()。没有什么。我想我疯了。我错过什么了吗


这是在iOS 10和am上使用的故事板。任何帮助都将不胜感激

不久前,我不得不在客户端的应用程序中执行此操作。以下是对我有效的方法:

我有一个
UISearchBar
子类:

@property (nonatomic, strong) UITextField* textField;
我从
init
调用了以下命令:

    self.textField                 = [self findViewOfClass:[UITextField class] inView:self];

    self.translucent               = NO;   
    self.barTintColor              = ...;
    self.textField.backgroundColor = ...;

- (id)findViewOfClass:(Class)class inView:(UIView*)view
{
    if ([view isKindOfClass:class])
    {
        return view;
    }
    else
    {
        for (UIView* subview in view.subviews)
        {
            id foundView = [self findViewOfClass:class inView:subview];

            if (foundView != nil)
            {
                return foundView;
            }
        }
    }

    return nil;
}
基本部分是查找
UITextField
。(我做了一件类似的事情,允许我定制取消按钮的样式。)我模糊地记得禁用半透明是真的需要的;很容易尝试

应该是这样。让我知道这是否适合你


我只有Obj-C代码,但这很容易转换。

我最终忽略了所有关于这个主题的帖子中以前的答案,并完成了我自己的调试视图层次结构。我发现了一个用作背景的ImageView,我猜它现在被称为“_UISearchBarSearchFieldBackgroundView”。这帮助我找到了一个函数,至少可以解决iOS 9+的问题

searchBar.setSearchFieldBackgroundImage(UIImage(), for: .normal)
需要注意的一点是,这不是解决此问题的唯一方法。然而,我之所以使用它,是因为它不需要循环,而且因为图像是空的,所以不会添加额外的视图,从而产生与其他方法相同的最终结果


需要注意的一点是,这可能只适用于iOS 9+。因此,你的差异可能会有所不同。我使用iOS 10进行了测试,部署目标为9.3。

这实际上非常接近。但答案可以简单一点。我会把它寄出去的。