簡體   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