iOS iOS13适配不完全整理

1.Xcode 11报错 [_LSDefaults sharedInstance]: unrecognized selector sent to class)

更新友盟,直接更新没有反应的话可以尝试直接指定更新到2.1.1版本

2.KVC方式来获取私有属性被限制.

重灾区是textField

[textField setValue:[UIColor red] forKeyPath:@"_placeholderLabel.textColor"];
//替换为
textField.attributedPlaceholder = [[NSAttributedString alloc] initWithString:@"输入"attributes:@{NSForegroundColorAttributeName: [UIColor red]}];

波及影响到项目中使用的SearchBar的textField

  • (UITextField *)sa_GetSearchTextFiled{
    if ([[[UIDevice currentDevice]systemVersion] floatValue] >= 13.0) {
    return self.searchTextField;
    }else{
    UITextField *searchTextField = [self valueForKey:@"_searchField"];
    return searchTextField;
    }
    }

3.深夜模式
在开发中,使用的系统控件未设置背景色或者为透明的情况下,进入深夜模式后,控件背景色变为黑色。

1)当短期内无法适配全部深夜模式的情况的解决办法

配置plist文件: 在Info.plist 文件中,在plist文件里新增属性User Interface Style 数据格式为string。值设置为Light。

if(@available(iOS 13.0,*)){
self.window.overrideUserInterfaceStyle = UIUserInterfaceStyleLight;
}

2)单个界面不遵循暗黑模式

UIViewController与UIView 都新增一个属性 overrideUserInterfaceStyle

将 overrideUserInterfaceStyle 设置为对应的模式,则强制限制该元素与其子元素以设置的模式进行展示,不跟随系统模式改变进行改变

1.设置 ViewController 的该属性, 将会影响视图控制器的视图和子视2.图控制器采用该样式
2.设置 View 的该属性, 将会影响视图及其所有子视图采用该样式
3.设置 Window 的该属性, 将会影响窗口中的所有内容都采用样式,包括根视图控制器和在该窗口中显示内容的所有演示控制器(UIPresentationController)

你可能感兴趣的:(iOS iOS13适配不完全整理)