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

转载于:https://www.cnblogs.com/RiverYangZJ/p/5584781.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值