gpt4 book ai didi

ios - 更改 CNContactPickerViewController 的状态栏颜色

转载 作者:行者123 更新时间:2023-11-29 00:17:23 26 4
gpt4 key购买 nike

我有一个 ContactPicker,可以控制项目中其他 ViewController 的颜色,但无法控制 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 Docs 中找到了这个:应用程序默认使用新的基于 View Controller 的状态栏管理系统。要选择退出此功能,请将 UIViewControllerBasedStatusBarAppearance 键的值添加到您的 Info.plist 中。

当我有一个全局属性无法控制每个 View 时,我可以管理使 ContactPicker 状态栏变为白色。

最佳答案

我一直在尝试各种对我不起作用的方法情况:

(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)这有效,方法是扩展类并覆盖方法“preferredStatusBarStyle”:

注意:在我的 plist 中,我已将“基于 View Controller 的状态栏外观”设置为"is"

对于所有其他 ViewController,只需将 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

关于ios - 更改 CNContactPickerViewController 的状态栏颜色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44976651/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com