如何从视图中删除最深的子图层?

时间:2013-02-12 03:42:32

标签: ios objective-c cocoa calayer

从视图的主图层中删除最深的子图层的方法是什么?应该很简单,我对iOS很新。

2 个答案:

答案 0 :(得分:6)

如果你真的是指后面的图层(不是视图),你也可以试试这个:

[[view.layer.sublayers objectAtIndex:0] removeFromSuperlayer];

如果您想要删除后视图,可以使用类似的:

[[view.subviews objectAtIndex:0] removeFromSuperview];

当然,如果您真的想要删除最深层子图层/子视图,包括子视图,则必须执行以下操作:

CALayer *layer = view.layer;
while ([layer.sublayers count] > 0) {
    layer = [layer.sublayers objectAtIndex:0];
}
[layer removeFromSuperlayer];

不过,这似乎是一个坏主意。如果您真的在寻找,我建议您重新考虑您实际需要的内容。

答案 1 :(得分:3)

如果您的意思是最后面的子视图,请使用:

UIView *subViewToBeRemoved = [mainView.subviews objectAtIndex:0];
[subViewToBeRemoved removeFromSuperview]; 

mainView.subviews将在屏幕上以可见顺序返回视图子视图的数组。

如果最深的是你可以使用的最前面的视图

UIView *subViewToBeRemoved = [mainView.subviews lastObject];
[subViewToBeRemoved removeFromSuperview];