【问题标题】:How to remove deepest sublayer from view?如何从视图中删除最深的子层?
【发布时间】:2013-02-12 03:42:31
【问题描述】:

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

【问题讨论】:

  • 最深是指后面那个吗?或者你的意思是最深的,view.sublayers.sublayers....等等,直到你不能再去

标签: ios objective-c cocoa calayer


【解决方案1】:

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

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

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

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

当然,如果你真的想删除 deepest 子层/子视图,包括那些子视图,你必须这样做:

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

不过,这似乎是个坏主意。如果您真的在寻找它,我建议您重新考虑您真正在寻找什么。

【讨论】:

  • 好吧,这行得通。我想我只是对 iOS 中的层架构感到困惑。
【解决方案2】:

如果你指的是最后面的子视图,请使用:

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

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

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

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

【讨论】:

    猜你喜欢
    • 2012-06-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-05-04
    • 2010-11-21
    • 2011-01-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多