我按照这个答案使用CALayer
创建梯度。这键盘命令是
[view.layer insertSublayer:gradient atIndex:0];
我的问题是我想定期更新渐变。如果我反复调用上面的代码,那么当新的渐变被放置在旧的梯度下时,什么都不会发生。看这个答案。
我的问题是:如何用另一个子层替换子层。我可能应该打电话 replaceSublayer:with:
.但要做到这一点,我需要参考旧的渐变。有没有一种动态的方式来获得这个。像[view.layer getSublayerAtIndex: 0]
?在视图控制器中存储对当前渐变的引用是最简单的方法吗?
想法?
[[view layer] replaceSublayer:[[[view layer] sublayers] objectAtIndex:0] with:gradient];
如果要获取子图层,则应使用此方法:
[view.layer.sublayers objectAtIndex:0];
然后,您可以通过以下方式替换子图层
[view.layer replaceSublayer:[view.layer.sublayers objectAtIndex:0] with:yourNewGradient];
除了替换图层之外,您还可以更新现有 CAGradientLayer 的colors
、locations
和其他属性来更改显示渐变的参数。