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。这实际上非常接近。但答案可以简单一点。我会把它寄出去的。