5

我在界面生成器中使用类大小,为不同的大小定义略有不同的设计。

我的一个视图没有针对特定尺寸安装。这按预期工作,但现在我想以编程方式判断该视图是否已安装。无论是否安装,看起来视图永远不会为零,而且我看不到任何要检查的 isInstalled 标志。

这样做的正确方法是什么?

4

3 回答 3

5

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

文档声明“仍会创建已卸载视图的运行时对象。但是,视图和任何相关约束都不会添加到视图层次结构中,并且视图的超级视图属性为 nil”。

因此,对有效超级视图的测试可以作为一种解决方案,但我发现它必须在viewDidAppear. 例如,superviews 仍然为零viewWillAppear

于 2014-11-21T16:37:24.390 回答
0

来自 Apple Docs:安装和卸载大小类的视图

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

您可以通过评估来检查PossiblyUninstalledView.superView != nil. 如果为真,则该类已正确安装。

于 2015-10-08T02:38:57.293 回答
0

您可以对 UIView 进行扩展并检查该视图是否具有超级视图。如果已安装,则返回 true,如果未安装,则返回 false。

extension UIView {
    func isInstalled() -> Bool{
        return (self.superview != nil) ? true : false
    }
}
于 2016-10-04T12:58:50.150 回答