Xcode 9.2中Auto Layout下UITextField占位符显示为黑点问题求助
解决Xcode 9.2中UITextField占位符显示为黑点的问题
我之前也踩过这个Xcode 9.2的坑!这个是当时Auto Layout和UITextField占位符渲染的兼容性bug,给你几个亲测有效的解决办法:
检查并重置占位符字体
有时候自定义字体未正确加载,或者占位符的字体设置存在冲突,会导致渲染异常。可以手动设置attributedPlaceholder来强制指定字体:let placeholderText = "请输入内容" let attributes: [NSAttributedString.Key: Any] = [ .font: UIFont.systemFont(ofSize: 14), .foregroundColor: UIColor.gray ] yourTextField.attributedPlaceholder = NSAttributedString(string: placeholderText, attributes: attributes)调整UITextField的高度约束
如果TextField的高度约束设置得小于占位符字体的实际行高,就会出现占位符被挤压成黑点的情况。建议把高度约束调整到至少比字体高度大2-4pt(比如字体是14pt的话,高度设为20pt以上)。添加空的leftView触发重绘
这是一个临时的workaround,很多开发者亲测有效:给TextField添加一个宽度为1pt的空leftView,强制触发布局重绘逻辑,就能正常显示占位符了:yourTextField.leftView = UIView(frame: CGRect(x: 0, y: 0, width: 1, height: 0)) yourTextField.leftViewMode = .always升级Xcode版本(最彻底的方案)
这个bug在Xcode 9.3及后续的版本中已经被官方修复了,如果项目允许的话,直接升级到更高版本的Xcode就能彻底解决这个问题。
内容的提问来源于stack exchange,提问作者YoungChul
相关产品推荐
相关产品推荐

