繁体   English   中英

UIView。 如何快速找到根 SuperView?

[英]UIView. How Do I Find the Root SuperView Fast?

我在视图层次结构中有一个随机子视图。 到达根超级视图的最佳/最快/最聪明的方法是什么?

干杯,
道格

如果您的应用只有一个UIWindow (通常为 true),并且该窗口的唯一子视图是您的根控制器的视图(通常也为 true):

[randomChildView.window.subviews objectAtIndex:0]

或者您可以通过检查view.superview递归地爬出层次结构,直到找到一个其 superview 为nil的视图。

对于 go 来说,处理器时间的数量是微不足道的。 我的 UIView 类别中有这个。

- (UIView *)rootView {
    UIView *view = self;
    while (view.superview != Nil) {
        view = view.superview;
    }
    return view;
}

迅速3/4:

func rootSuperView() -> UIView
{
    var view = self
    while let s = view.superview {
        view = s
    }
    return view
}

我喜欢这个。

extension UIView {
    func rootView() -> UIView {
        return superview?.rootView() ?? superview ?? self
    }
}

快速解决方案(极简主义中的快速):

extension UIView {
    var rootView: UIView {
        superview?.rootView ?? self
    }
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM