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