这有什么不同:
layer.shadowColor = UIColor.black.withAlphaComponent(0.5).cgColor
layer.shadowOpacity = 1
和此:
layer.shadowColor = UIColor.black.cgColor
layer.shadowOpacity = 0.5
它们看起来看起来一样,但即使它们存在,是否有任何可能的性能差异?
答案 0 :(得分:0)
它们具有相同的视觉效果,并且都可以制作动画,而对性能没有任何实际影响。
区别在于,在第一个示例中,您首先创建UIColor,然后将其转换为CGColor。 除非(例如)重复一百万次,否则这一额外步骤不会真正影响性能。
实际上,这只是一个偏好问题,因为两者都能达到相同的结果。
如果您想尝试一下,这里是代码:
let iterations = 1_000_000
func testPerformanceAlpha() {
let view = UIView()
measure {
for _ in 0...iterations {
view.layer.shadowColor = UIColor.black.withAlphaComponent(0.5).cgColor
view.layer.shadowOpacity = 1
}
}
}
func testPerformanceOpacity() {
let view = UIView()
measure {
for _ in 0...iterations {
view.layer.shadowColor = UIColor.black.cgColor
view.layer.shadowOpacity = 0.5
}
}
}