iOS13 暗黑模式适配,代码设置主题模式.
AppDelegate中设置主题模式
if (@available(iOS 13.0, *)) {
self.window.overrideUserInterfaceStyle = UIUserInterfaceStyleLight;
} else {
// Fallback on earlier versions
}
UINavigationController中设置导航栏颜色
- (void)viewDidLoad {
[super viewDidLoad];
// Do any additional setup after loading the view.
if (@available(iOS 13.0, *)) {
UIColor *bgColor = [UIColor ax_colorWithNormalStyle:UIColor.redColor darkStyle:UIColor.systemBackgroundColor];
[self.navigationBar setBackgroundImage:[UIImage ax_imageSquareWithColor:bgColor] forBarMetrics:UIBarMetricsDefault];
} else {
// Fallback on earlier versions
}
}
UINavigationController主题切换时需要手动设置颜色
- (void) traitCollectionDidChange: (UITraitCollection *) previousTraitCollection {
[super traitCollectionDidChange: previousTraitCollection];
if (@available(iOS 13.0, *)) {
UIColor *bgColor = [UIColor colorWithDynamicProvider:^UIColor *(UITraitCollection *traitCollection) {
if (traitCollection.userInterfaceStyle == UIUserInterfaceStyleDark) {
return UIColor.systemBackgroundColor;
}else {
return UIColor.redColor;
}}];
[self.navigationBar setBackgroundImage:[UIImage ax_imageSquareWithColor:bgColor] forBarMetrics:UIBarMetricsDefault];
} else {
}
}
代码设置切换主题
if (ax_keyWindow().overrideUserInterfaceStyle != UIUserInterfaceStyleDark) {
ax_keyWindow().overrideUserInterfaceStyle = UIUserInterfaceStyleDark;
}else{
ax_keyWindow().overrideUserInterfaceStyle = UIUserInterfaceStyleLight;
}
网友评论