苹果6.30后就不让使用Xcode11以下打包了(iOS12 SDK),虽然这几天提审不受影响,但还是切到Xcode11.1处理下吧,这时就要需要处理一些东东了。尤其是 dark模式,iOS13 SDK下适配。
1、黑夜模式禁调(强制设为原白色系风格);
Q: 当变化dark模式时 有些界面会自动系统处理为白色
A: AppDelegate中,强制设定为以前的白色系 UIUserInterfaceStyleLight
// 禁iOS13的调黑夜模式. warning: 在Xcode11及以上 放开以下注释
if (@available(iOS 13.0, *)) {
//强制设为iOS13之前默认的系统风格(白色系)
self.window.overrideUserInterfaceStyle = UIUserInterfaceStyleLight;
//fix: dark模式下 状态栏变白 导致看不清了
[UIApplication sharedApplication].statusBarStyle = UIStatusBarStyleDarkContent;
}
2、tabbar字体颜色;
Q:选中tabbar的某bar时字体变白色 看不清了
A:
if (@available(iOS 13.0, *)) {
// titColor就是选中的颜色,iOS13后默认的颜色是灰色,所以一般不需要设置默认颜色
self.tabBar.tintColor = kColor(@"#FF4A4A");
//如果需要设置默认颜色可以使用setUnselectedItemTintColor来设置未选中颜色
[self.tabBar setUnselectedItemTintColor:kColor(@"#505050")];
} else {
// set the text color for unselected state
NSMutableDictionary *normalAttrs = [NSMutableDictionary dictionary];
normalAttrs[NSForegroundColorAttributeName] = kColor(@"#505050");
// set the text color for selected state
NSMutableDictionary *selectedAttrs = [NSMutableDictionary dictionary];
selectedAttrs[NSForegroundColorAttributeName] = kColor(@"#FF4A4A");
// set the text Attributes
UITabBarItem *tabBar = [UITabBarItem appearance];
[tabBar setTitleTextAttributes:normalAttrs forState:UIControlStateNormal];
[tabBar setTitleTextAttributes:selectedAttrs forState:UIControlStateSelected];
}
3、状态栏内容颜色;
Q: 若简单的处理为 UIStatusBarStyleDefault,那么如果黑夜模式下 当前控制器(状态栏)背景色是白色,此时状态栏会自动由系统 根据黑夜模式 处理为 UIStatusBarStyleLightContent(内容白色),导致只能看到模糊的电池了。
A:
-(void)viewWillDisappear:(BOOL)animated {
[super viewWillDisappear:animated];
if (@available(iOS 13.0, *)) {
[UIApplication sharedApplication].statusBarStyle = UIStatusBarStyleDarkContent;
} else {
[UIApplication sharedApplication].statusBarStyle = UIStatusBarStyleDefault;
}
}
网友评论