ios – 在UISearchBar上将半透明设置为NO

我们有一个UITableView,其搜索添加了searchdisplayController.

我们希望在整个应用程序中保持半透明状态.

我对导航栏和其他栏有半透明效果,但在使用显示控制器时没有搜索栏.在应用程序的一部分,当我们使用搜索栏而不是显示控制器时,半透明度设置正确.

如何在显示控制器为NO的情况下设置UISearchBar的半透明属性

编辑:
这是我在viewDidLoad中的代码

self.navigationController.navigationBar.translucent = NO;
BOOL t = self.searchdisplayController.searchBar.translucent;
self.searchdisplayController.searchBar.translucent = NO;
self.navigationController.navigationBar.barTintColor = [UIColor redColor];
self.searchdisplayController.searchBar.barTintColor = [UIColor redColor];
UIBarStyle b1 = self.searchdisplayController.searchBar.barStyle;
UISearchBarStyle b2 = self.searchdisplayController.searchBar.searchBarStyle;
BOOL t2 = self.searchdisplayController.searchBar.translucent;

在调试器中运行,t = YES,t2 = YES. b1 = UIBarStyleDefault,b2 = UISearchBarStyleDefault.我在错误的位置设置NO吗?我已经尝试了故事板中的设置,并在viewDidLoad中

解决方法

对于UISearchBarStyleProminent:

1)务必检查“属性”检查器中搜索栏的“半透明”框.

2)将以下内容添加到viewDidLoad:

self.navigationController.navigationBar.translucent = NO; // If you have a navBar
self.searchdisplayController.searchBar.translucent = NO;

@RudolfAdamkovic编辑:

“I’ve found that for UISearchBarStyleProminent,executing [the following] helps. That way,you can keep it on in Storyboard.”
searchBar.translucent = YES;
searchBar.translucent = NO;

对于UISearchBarStyleMinimal:

为了让最小的搜索栏不是半透明的,我已经整理了一个解决方法.

1)务必检查“属性”检查器中搜索栏的“半透明”框.

2)将以下代码添加到viewDidLoad:

self.navigationController.navigationBar.translucent = NO;
self.searchdisplayController.searchBar.translucent = NO;
self.searchdisplayController.searchBar.backgroundColor = [UIColor desiredColor];

3)需要将UIView添加到viewController中.此视图需要为20px高度,并且应与searchBar.barTintColor具有相同的颜色.

注意:我认为需要这种解决方法,因为:“The style UISearchBarStyleMinimal provides no default background color or image but will display one if customized as such.”因此,为UISearchBarStyleMinimal获取功能的唯一方法是设置backgroundColor.

有关详细信息,请参阅UISearchBar documentation.

相关文章

UITabBarController 是 iOS 中用于管理和显示选项卡界面的一...
UITableView的重用机制避免了频繁创建和销毁单元格的开销,使...
Objective-C中,类的实例变量(instance variables)和属性(...
从内存管理的角度来看,block可以作为方法的传入参数是因为b...
WKWebView 是 iOS 开发中用于显示网页内容的组件,它是在 iO...
OC中常用的多线程编程技术: 1. NSThread NSThread是Objecti...