Swift - UITextView 不显示文本
Swift - UITextView does not display text
我的 UITextView
没有显示它的 text
,我不知道为什么。
let linkLabel: UITextView = {
let v = UITextView()
v.backgroundColor = .clear
v.text = "Link"
v.textColor = .lightGray
v.font = UIFont(name: "AvenirNext", size: 18)
v.font = v.font?.withSize(18)
v.textAlignment = .right
v.translatesAutoresizingMaskIntoConstraints = false
return v
}()
之前是 UILabel
并且运行良好。但我需要它是 UITextView
。但是,如果我像代码中那样将其更改为 UITextView
,则文本不会显示。
知道为什么会这样吗?
您的 UITextView 框架等于 CGRect.zero 并且与 UILabel 不同,UITextView 没有 intrinsic 框架。这就是你看不到它的原因。
解决方案
- 使用 init(frame: CGRect)
UITextView(frame: CGRect(x: 0, y: 0, width: 100, height: 30))
- 稍后设置帧属性
let v = UITextView()
v.frame = CGRect(x: 0, y: 0, width: 100, height: 30)
重要:
必须通过 InterfaceBuilder 或使用 UIView 对象的方法 view.addSubview 在代码中将 linkLabel 添加到视图中
override func viewDidLoad() {
super.viewDidLoad()
view.addSubview(linkLabel)
}
调试技巧:
- 调试视图层次结构
单击调试区域顶部栏中的 Debug View Hierarchy 按钮以检查暂停应用的视图层次结构的 3D 渲染
您可以将 sizeToFit() 和 isScrollEnabled 设置为 false,如下所示:
let linkLabel: UITextView = {
let v = UITextView()
v.backgroundColor = .red
v.text = "Link"
v.textColor = .lightGray
v.font = UIFont(name: "AvenirNext", size: 18)
v.font = v.font?.withSize(18)
v.textAlignment = .right
v.sizeToFit()
v.isScrollEnabled = false
v.translatesAutoresizingMaskIntoConstraints = false
return v
}()
// And set the frame whereever you want
linkLabel.frame.origin = CGPoint(x: 100, y: 100)
self.view.addSubview(linkLabel)
我的 UITextView
没有显示它的 text
,我不知道为什么。
let linkLabel: UITextView = {
let v = UITextView()
v.backgroundColor = .clear
v.text = "Link"
v.textColor = .lightGray
v.font = UIFont(name: "AvenirNext", size: 18)
v.font = v.font?.withSize(18)
v.textAlignment = .right
v.translatesAutoresizingMaskIntoConstraints = false
return v
}()
之前是 UILabel
并且运行良好。但我需要它是 UITextView
。但是,如果我像代码中那样将其更改为 UITextView
,则文本不会显示。
知道为什么会这样吗?
您的 UITextView 框架等于 CGRect.zero 并且与 UILabel 不同,UITextView 没有 intrinsic 框架。这就是你看不到它的原因。
解决方案
- 使用 init(frame: CGRect)
UITextView(frame: CGRect(x: 0, y: 0, width: 100, height: 30))
- 稍后设置帧属性
let v = UITextView()
v.frame = CGRect(x: 0, y: 0, width: 100, height: 30)
重要:
必须通过 InterfaceBuilder 或使用 UIView 对象的方法 view.addSubview 在代码中将 linkLabel 添加到视图中
override func viewDidLoad() {
super.viewDidLoad()
view.addSubview(linkLabel)
}
调试技巧:
- 调试视图层次结构
单击调试区域顶部栏中的 Debug View Hierarchy 按钮以检查暂停应用的视图层次结构的 3D 渲染
您可以将 sizeToFit() 和 isScrollEnabled 设置为 false,如下所示:
let linkLabel: UITextView = {
let v = UITextView()
v.backgroundColor = .red
v.text = "Link"
v.textColor = .lightGray
v.font = UIFont(name: "AvenirNext", size: 18)
v.font = v.font?.withSize(18)
v.textAlignment = .right
v.sizeToFit()
v.isScrollEnabled = false
v.translatesAutoresizingMaskIntoConstraints = false
return v
}()
// And set the frame whereever you want
linkLabel.frame.origin = CGPoint(x: 100, y: 100)
self.view.addSubview(linkLabel)