【问题标题】:What happens when a view has no constraints when using Auto Layout?当使用自动布局时视图没有约束时会发生什么?
【发布时间】:2014-07-10 23:26:45
【问题描述】:

在浏览有关自动布局的文档时,我想知道当视图没有约束时会发生什么。 Auto Layout 系统是否会自动向视图添加约束,或者系统是否会使用自动调整遮罩?

当视图没有任何约束时,Xcode 会在 Size Inspector 中告诉您,在构建时会为视图生成显式的左侧、顶部、宽度和高度约束。但是,当我在视图控制器的 viewDidAppear: 方法中记录视图的约束时,constraints 数组为空。我忽略了什么?

【问题讨论】:

    标签: ios xcode autolayout


    【解决方案1】:

    如果您根本不提供任何约束,Xcode 会自动分配一组默认约束,称为自动约束。它在构建应用程序的编译时执行此操作,而不是在设计时执行此操作。在您设计用户界面时,Xcode 5 中的自动布局会努力避免妨碍您。

    【讨论】:

      【解决方案2】:

      如果视图没有任何约束,那么它们将根据自动调整掩码为您生成。如果您添加一个视图并将其translatesAutoResizingMaskIntoContraints 属性设置为NO,那么您将获得该视图的随机位置。如果没有要满足的约束,那么它的框架的任何值都可以工作。

      【讨论】:

        【解决方案3】:

        你记录了什么,你在故事板中放了什么?如果我将标签拖到控制器中,然后在 viewDidAppear 中记录 self.view.constraints,我就明白了,

        2014-05-21 22:07:44.114 blah029347[3743:60b] (
            "<NSIBPrototypingLayoutConstraint:0x8d33f50 'IB auto generated at build time for view with fixed frame' H:|-(95)-[UILabel:0x8d32470](LTR)   (Names: '|':UIView:0x8d32290 )>",
            "<NSIBPrototypingLayoutConstraint:0x8d34230 'IB auto generated at build time for view with fixed frame' V:|-(177)-[UILabel:0x8d32470]   (Names: '|':UIView:0x8d32290 )>",
            "<NSIBPrototypingLayoutConstraint:0x8d342e0 'IB auto generated at build time for view with fixed frame' H:[UILabel:0x8d32470(42)]>",
            "<NSIBPrototypingLayoutConstraint:0x8d34310 'IB auto generated at build time for view with fixed frame' V:[UILabel:0x8d32470(21)]>",
            "<_UILayoutSupportConstraint:0x8d33cc0 V:[_UILayoutGuide:0x8d33460(0)]>",
            "<_UILayoutSupportConstraint:0x8d31690 V:|-(0)-[_UILayoutGuide:0x8d33460]   (Names: '|':UIView:0x8d32290 )>",
            "<_UILayoutSupportConstraint:0x8d31700 V:[_UILayoutGuide:0x8d338d0(0)]>",
            "<_UILayoutSupportConstraint:0x8d34340 _UILayoutGuide:0x8d338d0.bottom == UIView:0x8d32290.bottom>"
        )
        

        因此,如您所见,系统确实添加了约束。

        【讨论】:

          猜你喜欢
          • 2013-09-08
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2018-09-22
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多