iOS 13 适配

前言

苹果爸爸又出新品,想必各位大佬,都是紧跟其步伐,在此总结下目前iOS 13 遇到的奔溃,以及Dark Mode 等问题

setValue:forKeyPath: 方法奔溃

image.png

这个是使用setValue:forKeyPath:方法直接设置textFiled的textColor,用测试手机测试了下,只有iOS13 是奔溃的,iOS13以下的不会有问题,我们使用attribute的方式,就可以解决此问题,代码如下:

   NSMutableAttributedString *attributedStr = [[NSMutableAttributedString alloc] initWithString:@""];
    [attributedStr setAttributes:@{NSFontAttributeName:[UIFont systemFontOfSize:13], NSForegroundColorAttributeName:[UIColor colorFromHexString:@"#666666"]} range:NSMakeRange(0, 15)];
    
    self.rightTextField.attributedText = attributedStr;
    

如果用swift,使用KVC也会奔溃,可以使用runtime来代理,可以看下大佬的这个文章

暗黑模式 - Dark mode

iOS13 用户可以选择暗黑模式

image.png

看着是不错,就是有bug,当设置了Dark 样式,项目中有些界面会受到影响,看了下代码大多数是cell,弹框,键盘等,看了微信的App也有问题,原来iOS 13 是“来自天堂的魔鬼”😃😁哈哈哈~~

image.png

上面是项目中的一个设置界面,只有在iOS13 且设置了暗黑模式,才有问题。
那么怎么修复呢?
在官方文档中链接1可以看到

当我们在一个普通的 controlle, view 上重写这个属性,只会影响当前的视图,不会影响前面的 controller 和后续 present 的 controller。
但是当我们在 window 上设置 overrideUserInterfaceStyle 的时候,就会影响 window 下所有的 controller, view,如果想监听是Light或者是Dark模式,可以通过下面方法:

//Called when the iOS interface environment changes.
- (void)traitCollectionDidChange:(UITraitCollection *)previousTraitCollection;

so,如果想修改上面设置页面的出现的“黑色cell”,可以在Appdelegate中添加如下代码:

    if (@available(iOS 13.0, *)) {
#if __IPHONE_OS_VERSION_MAX_ALLOWED >= 130000
        self.window.overrideUserInterfaceStyle = UIUserInterfaceStyleLight;
#endif
    } else {
        // Fallback on earlier versions
    }
    

如果不使用__IPHONE_OS_VERSION_MAX_ALLOWED的宏,则你的项目在Xcode11以下版本会报错,因为overrideUserInterfaceStyle在 iOS13 以下是没有这个api的

image.png

状态栏

状态栏适配iOS 13,代码如下:

    if (@available(iOS 13.0, *)) {
#if __IPHONE_OS_VERSION_MAX_ALLOWED >= 130000
        [[UIApplication sharedApplication]setStatusBarStyle:UIStatusBarStyleDarkContent];
#endif
    } else {
        [[UIApplication sharedApplication]setStatusBarStyle:UIStatusBarStyleDefault];
    }
    

目前对iOS 13 测试出现的问题只有这几个,后续还会详细测试,有时间再分享,如有问题,请大佬们赐教~😄😄

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

推荐阅读更多精彩内容

  • iOS 13 如期而至,适配工作可以开展起来啦。在适配 iOS 13 过程中,遇到了如下一些问题。 1. UITe...
    前行哲阅读 20,269评论 48 136
  • 一. UISearchBar UISearchBar的 _searchField 私有属性去掉了, 但它的gett...
    庄msia阅读 2,945评论 1 0
  • Swift1> Swift和OC的区别1.1> Swift没有地址/指针的概念1.2> 泛型1.3> 类型严谨 对...
    cosWriter阅读 11,148评论 1 32
  • 我渴望着李清照一样的柔情,在冷冷清清凄凄惨惨戚戚中,体会着才下眉头却上心头的愁情。 ...
    苏离seal阅读 346评论 1 3
  • 今天带儿子去做夏天人们最痴狂的事情,也是我的最爱之一,捉知了猴。我们知道,这知了猴一般都是在晚上7点多至8点半左右...
    孙芳连阅读 246评论 0 0