更新了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>
③、UITextField的leftView宽度问题
也是更新之后跑项目发现文本框的leftView设置了frame,但是显示左侧视图的宽度是自适应宽度,如图
试了下用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)
}
最后还有一个就是私有KVC的问题,比如给 UITextField 的 Placeholder 设置颜色字体等,现在已不能通过KVC的形式去设置了
searchField.setValue(UIColor.light, forKeyPath: "_placeholderLabel.textColor")
但是可以用searchField.attributedPlaceholder设置富文本的方式 ok 记录完毕~!
searchField.attributedPlaceholder = NSAttributedString(string: "请输入", attributes:
[NSAttributedStringKey.foregroundColor : UIColor.light])