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文件添加如下键值

   UIUserInterfaceStyle
   Light
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])

你可能感兴趣的:(iOS 13 适配(if let解包crash、关闭暗黑模式、UITextField的leftView宽度))