XCode 6-iOS 8:以编程方式检查是否安装了视图

XCode 6-iOS 8:以编程方式检查是否安装了视图,ios,xcode,xcode6,autolayout,size-classes,Ios,Xcode,Xcode6,Autolayout,Size Classes,我在interface builder中使用类大小,为不同的大小定义稍微不同的设计 “我的视图”中的一个没有安装特定大小的视图。这正如预期的那样工作,但现在我希望能够通过编程来判断该视图是否已安装。无论是否安装,视图似乎永远不会为零,并且我看不到任何要检查的isInstalled标志 正确的方法是什么?这不是一个很好的解决方案,但我还没有找到更好的解决方案: “未安装视图的运行时对象仍在创建中。但是,该视图和任何相关约束未添加到视图层次结构,并且该视图的superview属性为nil”的状态 因

我在interface builder中使用类大小,为不同的大小定义稍微不同的设计

“我的视图”中的一个没有安装特定大小的视图。这正如预期的那样工作,但现在我希望能够通过编程来判断该视图是否已安装。无论是否安装,视图似乎永远不会为零,并且我看不到任何要检查的isInstalled标志


正确的方法是什么?

这不是一个很好的解决方案,但我还没有找到更好的解决方案:

“未安装视图的运行时对象仍在创建中。但是,该视图和任何相关约束未添加到视图层次结构,并且该视图的superview属性为nil”的状态

因此,一个有效的superview测试可以作为一个解决方案,但我发现它必须来得很晚-在
viewdide
中。超级视图在
视图中仍然为零,例如将出现

来自Apple文档:

仍将为已卸载的视图创建运行时对象。但是,该视图和任何相关约束不会添加到视图层次结构中,并且该视图的superview属性为nil。这与被隐藏是不同的。隐藏视图与任何相关约束一起位于视图层次中


您可以通过计算
possiblyunstalledview.superView!=无
。如果为true,则该类已正确安装。

您可以对UIView进行扩展,并检查该视图是否具有superview。如果安装了,它将返回true,如果没有,它将返回false

extension UIView {
    func isInstalled() -> Bool{
        return (self.superview != nil) ? true : false
    }
}