我跟随this answer使用CALayer创建了一个渐变。key命令是
[view.layer insertSublayer:gradient atIndex:0];我的问题是,我想定期更新梯度。如果我重复调用上面的代码,那么当新的渐变被放置在旧的渐变下时,什么都不会发生。参见this answer。
我的问题是:如何用一个子层替换另一个子层。我应该给replaceSublayer:with:打个电话。但要做到这一点,我需要引用旧的渐变。有没有一种动态的方法来获得它。像[view.layer getSublayerAtIndex: 0]这样的?在视图控制器中存储对当前渐变的引用是最简单的方法吗?
想法?
发布于 2011-05-15 00:30:47
[[view layer] replaceSublayer:[[[view layer] sublayers] objectAtIndex:0] with:gradient];发布于 2011-05-15 00:32:13
如果你想得到一个子层,你应该使用这个方法:
[view.layer.sublayers objectAtIndex:0];然后可以通过以下方式替换子层
[view.layer replaceSublayer:[view.layer.sublayers objectAtIndex:0] with:yourNewGradient];发布于 2011-05-15 00:46:42
除了替换图层之外,您还可以更新现有CAGradientLayer的colors、locations和其他属性来更改显示的渐变的参数。
https://stackoverflow.com/questions/6003067
复制相似问题