iOS 13 适配(if let解包crash、关闭暗黑模式、UITextField的leftView宽度)

更新了Xcode11.0之后莫名其妙项目各种crash
①、if let解包crash

if let open = open {
   self.updateHeader(with: open)
}

先是这种if let 解包的写法是官方推荐的写法,但是昨天更新 xcode11 之后就一直报Exec_Bad_Access僵尸对象 挠头表示不解,但是重新命名变量open就没事了 比如

if let openNew = open {
   self.updateHeader(with: openNew)
}

最奇怪的是改完跑一遍没问题,再撤回用原来的代码跑一遍也没问题了,具体原因无从考证
②、关闭Dark模式(暗黑)
项目暂时不需要Dark模式,可以打开info.plist文件添加如下键值

   <key>UIUserInterfaceStyle</key>
   <string>Light</string>
image.png

③、UITextField的leftView宽度问题
也是更新之后跑项目发现文本框的leftView设置了frame,但是显示左侧视图的宽度是自适应宽度,如图


image.png

试了下用snapkit可以完美解决

let leftView = UILabel(text: leftTitle,
                                   textColor: UIColor.deep,
                                   textAlignment: .left,
                                   font: UIFont.scaled(15.0))
leftView.snp.makeConstraints { (make) in
    make.width.equalTo(Device.scaled(100.0))
    make.height.equalTo(30.0)
}
image.png

最后还有一个就是私有KVC的问题,比如给 UITextField 的 Placeholder 设置颜色字体等,现在已不能通过KVC的形式去设置了

searchField.setValue(UIColor.light, forKeyPath: "_placeholderLabel.textColor")

但是可以用searchField.attributedPlaceholder设置富文本的方式 ok 记录完毕~!

searchField.attributedPlaceholder = NSAttributedString(string: "请输入", attributes:
 [NSAttributedStringKey.foregroundColor : UIColor.light])
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容