繁体   English   中英

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...
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM