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