我有一个ContactPicker,可以控制项目中其他ViewControllers的颜色但无法控制ContactsPickers 状态栏颜色。
我的目标是让状态栏文字为白色。
- (IBAction)btnSearch:(id)sender {
//global statusbar color
UINavigationBar.appearance.translucent = NO;
UINavigationBar.appearance.barStyle = UIBarStyleBlack;
CNContactPickerViewController *contactPicker = [CNContactPickerViewController new];
//local statusbar color
contactPicker.navigationController.navigationBar.translucent = NO;
contactPicker.navigationController.navigationBar.barStyle = UIBarStyleBlack;
contactPicker.delegate = self;
contactPicker.displayedPropertyKeys = @[CNContactNamePrefixKey, CNContactPhoneNumbersKey];
[self presentViewController:contactPicker animated:NO completion:nil];
}
我也在Xcode文档中找到了这个: 应用程序默认使用基于视图控制器的新状态栏管理系统。要退出此选项,请将UIViewControllerBasedStatusBarAppearance键的值NO添加到Info.plist。
当我有一个全局属性不能控制每个视图时,我可以管理 使ContactPicker状态栏具有白色。
答案 0 :(得分:1)
我一直在尝试各种不适合我的方法 情况:
<强>(1)强> 在我的Appdelegate中我试过这个,它没有效果:
[UIApplication sharedApplication].statusBarStyle = UIStatusBarStyleDefault;
<强>(2)强> 在我的AppDelegate中我有这个,但它没有效果:
UINavigationBar.appearance.translucent = NO;
UINavigationBar.appearance.barStyle = UIBarStyleBlack;
<强>(3)强> 就在呈现ContactsController之前,我有这个(没有效果):
self.navigationController.navigationBar.barStyle = UIBarStyleBlack;
self.navigationController.navigationBar.translucent = NO;
<强>(4)强> 在呈现Controller之前,这也没有效果:
contactPicker.navigationController.navigationBar.translucent = NO;
contactPicker.navigationController.navigationBar.barStyle = UIBarStyleBlack;
<强>(5)强> 通过扩展类并重写方法&#34; preferredStatusBarStyle&#34;
来实现注意:在我的plist中我设置了#34;查看基于控制器的状态栏外观&#34;到&#34;是&#34;
对于所有其他ViewControllers,只需将半透明和NavigationCotroller的barStyle设置为UIBarStyleBlack即可,但 不适用于联系人。
·H
#import <ContactsUI/ContactsUI.h>
@interface ContactViewController : CNContactPickerViewController
@end
的.m
#import "ContactViewController.h"
@interface ContactViewController ()
@end
@implementation ContactViewController
- (void)viewDidLoad {
[super viewDidLoad];
}
- (void)didReceiveMemoryWarning {
[super didReceiveMemoryWarning];
}
-(UIStatusBarStyle)preferredStatusBarStyle {
return UIStatusBarStyleLightContent;
}
@end