首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >替换CALayer

替换CALayer
EN

Stack Overflow用户
提问于 2011-05-15 00:12:23
回答 3查看 2.7K关注 0票数 0

我跟随this answer使用CALayer创建了一个渐变。key命令是

代码语言:javascript
复制
[view.layer insertSublayer:gradient atIndex:0];

我的问题是,我想定期更新梯度。如果我重复调用上面的代码,那么当新的渐变被放置在旧的渐变下时,什么都不会发生。参见this answer

我的问题是:如何用一个子层替换另一个子层。我应该给replaceSublayer:with:打个电话。但要做到这一点,我需要引用旧的渐变。有没有一种动态的方法来获得它。像[view.layer getSublayerAtIndex: 0]这样的?在视图控制器中存储对当前渐变的引用是最简单的方法吗?

想法?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2011-05-15 00:30:47

代码语言:javascript
复制
    [[view layer] replaceSublayer:[[[view layer] sublayers] objectAtIndex:0] with:gradient];
票数 4
EN

Stack Overflow用户

发布于 2011-05-15 00:32:13

如果你想得到一个子层,你应该使用这个方法:

代码语言:javascript
复制
[view.layer.sublayers objectAtIndex:0];

然后可以通过以下方式替换子层

代码语言:javascript
复制
[view.layer replaceSublayer:[view.layer.sublayers objectAtIndex:0] with:yourNewGradient];
票数 3
EN

Stack Overflow用户

发布于 2011-05-15 00:46:42

除了替换图层之外,您还可以更新现有CAGradientLayer的colorslocations和其他属性来更改显示的渐变的参数。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6003067

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档