我已经以编程方式设置了UILabel,并且尝试通过稍后在ViewController中调用的函数来更改text属性,但是当该函数被称为questionLabel.text时,其默认值为“ Welcome”。
基本上,我想完成的是:
func changeLabelText() {
questionLabel.text = "New label text"
print(questionLabel.text!)
}
changeLabelText()
// prints "New label text"
但是我实际上得到的是:
func changeLabelText() {
questionLabel.text = "New label text"
print(questionLabel.text!)
}
changeLabelText()
// prints "Welcome"
这是我设置标签的方式:
class ViewController: UIViewController, AVCaptureVideoDataOutputSampleBufferDelegate {
@IBOutlet var cameraView: UIView!
var questionLabel: UILabel {
let label = UILabel()
label.lineBreakMode = .byWordWrapping
label.backgroundColor = .white
label.textColor = .black
label.text = "Welcome"
label.textAlignment = .center
label.frame = CGRect(x: 65, y: 100, width: 300, height: 65)
return label
}
有什么建议吗?非常感谢!
var questionLabel: UILabel {
let label = UILabel()
label.lineBreakMode = .byWordWrapping
label.backgroundColor = .white
label.textColor = .black
label.text = "Welcome"
label.textAlignment = .center
label.frame = CGRect(x: 65, y: 100, width: 300, height: 65)
return label
}
是计算属性,因此每次访问都需要一个新的单独实例
var questionLabel: UILabel = { let label = UILabel() label.lineBreakMode = .byWordWrapping label.backgroundColor = .white label.textColor = .black label.text = "Welcome" label.textAlignment = .center label.frame = CGRect(x: 65, y: 100, width: 300, height: 65) return label }()