0

我想要达到的目标:

Custom View 1
   aligned at the top
   fixed height = 20px
   width = window width

Horizontal Split View
   just below the custom view
   width = window width
   height = as large as possible

Custom View 2
   aligned at the bottom
   fixed height = 20px
   width = window width

这是一个非常简单的布局:窗口顶部和底部的页眉和页脚,以及中间的拆分视图,左侧和右侧的一些内容应随窗口调整大小。但是,Apple 设计的自动布局管理器非常糟糕,我似乎无法让它工作。(我已经摸索了大约三个小时了!)

问题是:一旦我给自定义视图一个固定的高度,窗口高度就被锁定了,我不能再垂直调整它的大小了。我正在尝试使用以下限制来做到这一点:

Custom View 1
    Constraints
    height = 20px

Custom View 2
    height = 20px

Constraints
    Leading horiz space from Custom View 1 to Superview = 0
    Leading horiz space from Custom View 2 to Superview = 0
    Leading horiz space from Split View to Superview = 0
    Trailing horiz space from Custom View 1 to Superview = 0
    Trailing horiz space from Custom View 2 to Superview = 0
    Trailing horiz space from Split View to Superview = 0

    Top vert space between Custom View 1 and Superview = 0
    Vert space between Custom View 1 and Split View = 0
    Vert space between Custom View 2 and Split View = 0
    Bottom vert space between Custom View 2 and Superview = 0
    Top vert space between Custom View 2 and Superview = 344px (!)

最后一行是Xcode加的,删不掉。当然,这是负责固定垂直布局的。我怎样才能摆脱它???

4

2 回答 2

2

好的,我终于想通了。

我不得不保留 IB 的冗余约束,但给它的优先级为 1。IB 给它的优先级为 1000,总是覆盖我的约束。

于 2013-07-24T11:52:13.730 回答
0

每个视图都需要有足够的约束让布局系统计算位置(x 和 y)和大小(宽度和高度)。如果系统没有足够的信息来计算这些属性,则认为布局不明确。Xcode 中的 Interface Builder 不会让您创建模棱两可的布局,因此它将添加约束以确保完全约束的布局。

根据您的信息,似乎 subview2 受到了足够的限制。但是,我认为您可能没有将视图的高度设置为约束。您为视图设置的框架会被布局系统忽略。这会引入歧义。尝试向 subview2 添加高度约束。

于 2013-07-24T11:00:27.637 回答