rad*_*dex 59 cocoa core-animation objective-c
删除所有图层的子图层时遇到问题.我目前手动执行此操作,但这会带来不必要的混乱.我在谷歌找到了很多关于这方面的话题,但没有答案.
我试着这样做:
for(CALayer *layer in rootLayer.sublayers)
{
[layer removeFromSublayer];
}
但它不起作用.
此外,我试图将rootLayer.sublayers克隆到单独的NSArray中,但结果是相同的.
有任何想法吗?
编辑:
我觉得它现在有效,但我错了.它适用于CALayers,但它不适用于CATextLayers.有任何想法吗?
Pas*_*que 125
从图层中删除所有子图层的最简单方法是将子图层属性设置为nil:
rootLayer.sublayers = nil;
Ben*_*ieb 33
以下应该有效:
for (CALayer *layer in [[rootLayer.sublayers copy] autorelease]) {
[layer removeFromSuperlayer];
}
Run Code Online (Sandbox Code Playgroud)
Tom*_*omH 18
[rootLayer.sublayers makeObjectsPerformSelector:@selector(removeFromSuperlayer)];
Run Code Online (Sandbox Code Playgroud)
调用rootLayer.sublayers = nil;可能会导致崩溃(例如,如果在iOS 8下,您在拥有的视图上调用removeFromSuperview两次rootLayer).
正确的方法应该是:
[[rootLayer.sublayers copy] makeObjectsPerformSelector:@selector(removeFromSuperlayer)]
copy需要调用,以便removeFromSuperlayer不会修改迭代调用的数组,否则会引发异常.
| 归档时间: |
|
| 查看次数: |
52296 次 |
| 最近记录: |