在iOS中,shadowColor与0.5 alpha和shadowOpacity设置为0.5之间有区别吗?

时间:2017-08-23 17:01:29

标签: ios swift calayer shadow

这有什么不同:

layer.shadowColor = UIColor.black.withAlphaComponent(0.5).cgColor
layer.shadowOpacity = 1

和此:

layer.shadowColor = UIColor.black.cgColor
layer.shadowOpacity = 0.5

它们看起来看起来一样,但即使它们存在,是否有任何可能的性能差异?

1 个答案:

答案 0 :(得分:0)

它们具有相同的视觉效果,并且都可以制作动画,而对性能没有任何实际影响。

区别在于,在第一个示例中,您首先创建UIColor,然后将其转换为CGColor。 除非(例如)重复一百万次,否则这一额外步骤不会真正影响性能。

实际上,这只是一个偏好问题,因为两者都能达到相同的结果。

为了证明这一点,您可以使用XCTests进行一百万次迭代: XCTests

如果您想尝试一下,这里是代码:

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
        }
    }
}