cgrect()未拾取宽度

问题描述 投票:-1回答:2

我想问为什么我的layer.frame = cgrect()为什么没有获得我在viewDidLayoutSubviews中设置的宽度(350),即使它确实在控制台中打印了。但宽度仍与我在情节提要中设置的宽度相同(390)。

override func viewDidLayoutSubviews() {

        width = masjidName.frame.width

        print(width)


    }


    override func viewDidLoad() {
        super.viewDidLoad()

        viewDidLayoutSubviews()

        let bottomLine1 = CALayer()
        bottomLine1.frame = CGRect(x: 0.0, y: masjidName.frame.height - 1, width: width, height: 1)
        bottomLine1.backgroundColor = UIColor.black.cgColor

        let bottomLine2 = CALayer()
        bottomLine2.frame = CGRect(x: 0.0, y: masjidName.frame.height - 1, width: width, height: 1)
        bottomLine2.backgroundColor = UIColor.black.cgColor

}
ios swift autolayout
2个回答
0
投票

将您的整个代码移至viewDidLayoutSubviews。viewDidLayoutSubviews是一个回调方法,您不应显式调用此方法。我建议您经历ViewController生命周期HERE


0
投票

我将viewdidload中的内容移到viewdidappear中使其正常工作。由于宽度需要一段时间才能更新,因此在此之前会先调用viewdidload。

© www.soinside.com 2019 - 2024. All rights reserved.