viewDidLoad 之外的闭包
Closures outside viewDidLoad
我想创建一个没有 Storyboard 的简单应用程序。我在 viewDidLoad
方法之外创建了一个闭包,它代表屏幕上的一个标题。我的问题是代码包含重复的行 view.addSubview(label)
并将标签定位到错误的位置。
你能帮我解决这个问题吗?
class HomeVC: UIViewController {
let titleLabel: UILabel = {
let view = UIView()
let label = UILabel()
label.translatesAutoresizingMaskIntoConstraints = false
view.addSubview(label)
label.centerXAnchor.constraint(equalTo: view.centerXAnchor).isActive = true
label.centerYAnchor.constraint(equalTo: view.centerYAnchor).isActive = true
label.text = "Hello"
return label
}()
override func viewDidLoad() {
super.viewDidLoad()
view.addSubview(titleLabel)
}
}
我想你想在 HomeVC 的视图中心设置标签,上面代码中的问题是你正在创建一个新视图并将标签放在视图内,这不是你想要的,所以
你先像这样制作标签:
let titleLabel: UILabel = {
let label = UILabel()
label.translatesAutoresizingMaskIntoConstraints = false
label.text = "Hello"
return label
}()
然后在 viewDidLoad
中添加此标签作为视图的子视图并应用约束
override func viewDidLoad() {
super.viewDidLoad()
view.addSubview(titleLabel)
setupTitleLabel()
}
func setupTitleLabel() {
titleLabel.centerXAnchor.constraint(equalTo: view.centerXAnchor).isActive = true
titleLabel.centerYAnchor.constraint(equalTo: view.centerYAnchor).isActive = true
//you also need to give the label height and width constraints to label here...
}
我想创建一个没有 Storyboard 的简单应用程序。我在 viewDidLoad
方法之外创建了一个闭包,它代表屏幕上的一个标题。我的问题是代码包含重复的行 view.addSubview(label)
并将标签定位到错误的位置。
你能帮我解决这个问题吗?
class HomeVC: UIViewController {
let titleLabel: UILabel = {
let view = UIView()
let label = UILabel()
label.translatesAutoresizingMaskIntoConstraints = false
view.addSubview(label)
label.centerXAnchor.constraint(equalTo: view.centerXAnchor).isActive = true
label.centerYAnchor.constraint(equalTo: view.centerYAnchor).isActive = true
label.text = "Hello"
return label
}()
override func viewDidLoad() {
super.viewDidLoad()
view.addSubview(titleLabel)
}
}
我想你想在 HomeVC 的视图中心设置标签,上面代码中的问题是你正在创建一个新视图并将标签放在视图内,这不是你想要的,所以
你先像这样制作标签:
let titleLabel: UILabel = {
let label = UILabel()
label.translatesAutoresizingMaskIntoConstraints = false
label.text = "Hello"
return label
}()
然后在 viewDidLoad
中添加此标签作为视图的子视图并应用约束
override func viewDidLoad() {
super.viewDidLoad()
view.addSubview(titleLabel)
setupTitleLabel()
}
func setupTitleLabel() {
titleLabel.centerXAnchor.constraint(equalTo: view.centerXAnchor).isActive = true
titleLabel.centerYAnchor.constraint(equalTo: view.centerYAnchor).isActive = true
//you also need to give the label height and width constraints to label here...
}