iOS搜索时状态栏文字颜色修改
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了iOS搜索时状态栏文字颜色修改相关的知识,希望对你有一定的参考价值。
问题1:使用UISearchDisplayController搜索时状态栏变黑
解决方案:参考参考文献1的方法将导航控制器的view的背景改为[self.navigationController.view setBackgroundColor:[UIColor whiteColor]];或者搜索条的颜色
问题2:问题1的解决方案可能会导致在iPhone5s上搜索时字体为白色,导致看不清楚状态栏上的时间、电量
解决方案:实现UISearchDisplayDelegate里的两个方法,将要搜索时将状态栏字体改为黑色,搜索结束后再将状态栏字体改为白色。
- (void)viewDidLoad{ [super viewDidLoad]; self.searchDisplayController.delegate = self; } - (void) searchDisplayControllerWillBeginSearch:(UISearchDisplayController *)controller{ // 状态栏的字体变成黑色 [UIApplication sharedApplication].statusBarStyle = UIStatusBarStyleDefault; } - (void) searchDisplayControllerDidEndSearch:(UISearchDisplayController *)controller{ // 状态栏的字体变成白色 [UIApplication sharedApplication].statusBarStyle = UIStatusBarStyleLightContent; }
问题2解决方案优化:创建一个控制器基类,该基类实现了问题2解决方案的3个方法,其他用到UISearchDisplayController搜索的控制器继承该基类即可。
#import <UIKit/UIKit.h> //! 使用到UISearchDisplayController的控制器可以继承该基类,这样在搜索的时候搜状态栏的字体会变成黑色,搜索完毕之后状态栏的字体变回白色 @interface UISearchDisplayBaseViewController : UIViewController<UISearchDisplayDelegate> @end
#import "UISearchDisplayBaseViewController.h" @implementation UISearchDisplayBaseViewController - (void)viewDidLoad{ [super viewDidLoad]; self.searchDisplayController.delegate = self; } - (void) searchDisplayControllerWillBeginSearch:(UISearchDisplayController *)controller{ // 状态栏的字体变成黑色 [UIApplication sharedApplication].statusBarStyle = UIStatusBarStyleDefault; } - (void) searchDisplayControllerDidEndSearch:(UISearchDisplayController *)controller{ // 状态栏的字体变成白色 [UIApplication sharedApplication].statusBarStyle = UIStatusBarStyleLightContent; } @end
参考文献:
1.《UISearchDisplayController点击搜索时屏幕顶部出现黑条问题的解决方案》http://blog.csdn.net/u010828718/article/details/50496495
2.《ios9 - 状态栏的颜色各种问题》http://www.cnblogs.com/zw-ios/p/5387650.html
以上是关于iOS搜索时状态栏文字颜色修改的主要内容,如果未能解决你的问题,请参考以下文章