gpt4 book ai didi

ios - 为什么在为 subview 添加图层蒙版时需要调用 layoutIfNeeded()?

转载 作者:行者123 更新时间:2023-11-28 15:49:26 24 4
gpt4 key购买 nike

我的主视图有一个 subview ,我使用以下扩展添加了一个掩码:

extension UIView{
func addTopRoundCorners(){
let bezierPath = UIBezierPath(roundedRect: self.bounds, byRoundingCorners: [UIRectCorner.topLeft, UIRectCorner.topRight], cornerRadii: CGSize(width: 20, height: 20))
let maskLayer = CAShapeLayer()
maskLayer.path = bezierPath.cgPath
maskLayer.fillColor = UIColor.red.cgColor
self.layer.mask = maskLayer
}

我注意到如果在将掩码添加到我的 subview 之前在我的主视图上调用 layoutIfNeeded(),则此代码对我的 subview 的影响只会出现在屏幕上。如果有人能向我解释这是为什么,我将不胜感激?

最佳答案

layoutIfNeeded 将计算 View 的位置和大小。如果在计算最终位置和大小之前调用 addTopRoundCorners() 函数,则用于创建 UIBezierPathself.bounds 将是错了。

自动布局不会自动调整 mask 层的大小,也不会调用 addTopRoundCorners 重新创建路径。

关于ios - 为什么在为 subview 添加图层蒙版时需要调用 layoutIfNeeded()?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42519999/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com