cgrect() 未获取的宽度

width not picked up by cgrect()

我想问为什么我的 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

}

将您的整个代码移至 viewDidLayoutSubviews。 viewDidLayoutSubviews 是一个回调方法,你不应该明确地调用它。 我建议您完成 ViewController 生命周期 HERE

我通过将我在 viewdidload 中的内容移动到 viewdidappear 中来让它工作。由于更新宽度需要一段时间,因此会先调用 viewdidload。