如何解决如何解决“优化机会”
我正在使用xcode 12。 我写了扩展UI视图,如下所示:
@IBInspectable
public var shadowRadius: CGFloat {
get {
return layer.shadowRadius
}
set {
layer.shadowRadius = newValue
}
}
@IBInspectable
public var shadowOpacity: Float {
get {
return layer.shadowOpacity
}
set {
layer.shadowOpacity = newValue
}
}
@IBInspectable
public var shadowOffset: CGSize {
get {
layer.shadowOffset
}
set {
layer.shadowOffset = newValue
}
}
@IBInspectable
public var shadowColor: UIColor {
get {
return UIColor(cgColor: layer.shadowColor ?? UIColor.clear.cgColor)
}
set {
layer.shadowColor = newValue.cgColor
}
}
一切正常,但是当我调试视图时,我看到了一些紫色的警告。
x-xcode-debug-views:// 7f8fd2258020?DBGViewDebuggerLaunchSessionParameter = 7f8fd2258020: 运行时:优化机会:该层使用动态 渲染昂贵的阴影。如果可能,请尝试设置
shadowPath
,或将阴影预先渲染到图像中并将其放置 在该层下面。
有人可以向我解释一下并帮助我摆脱它吗?
解决方法
设置shadowPath
一种解决方案是通过明确设置shadowPath
来“引导”阴影渲染,例如:
yourViewWithShadow.layer.shadowPath = UIBezierPath(rect: yourViewWithShadow.bounds).cgPath
确保在正确的时间设置框架!
缓存栅格化
另一种解决方案是缓存栅格化:
yourViewWithShadow.layer.shouldRasterize = true
yourViewWithShadow.layer.rasterizationScale = UIScreen.main.scale
希望这可以帮助您消除昂贵的计算。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。