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)

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • *7月8日上午 N:Block :跟一个函数块差不多,会对里面所有的内容的引用计数+1,想要解决就用__block...
    炙冰阅读 7,296评论 1 14
  • 一、简介 <<UITextField(文本框) : UITextField被用作项目中获取用户信息的重要控件.在A...
    无邪8阅读 10,869评论 0 1
  • UIWindow 初始化: self.window= [[UIWindowalloc]initWithFrame:...
    Sunny_Fight阅读 4,645评论 0 1
  • 1,Search Bar 怎样去掉背景的颜色(storyboard里只能设置background颜色,可是发现cl...
    以德扶人阅读 7,361评论 2 50
  • 在这个夜晚,5年的过往历历在目,幸福,悲伤,一切就仿佛回到过去,那一些人,些许事儿,那掉漆的桌子,磨薄的格尺,你们...
    李若凡的散文集阅读 1,150评论 0 1