1

我有一个非常简单的应用程序......我正在学习自动布局,所以我创建了一个具有白色背景、一个按钮和一个文本字段的 viewController。我为按钮和文本字段添加了约束,以将它们放在父视图(viewcontrollers 视图)的顶部并彼此相邻。完美地工作...

然后我试图把这个 viewController 推到一个 navigationController 中,一切都变成了废话。背景颜色现在是黑色(而不是白色),并且按钮和文本字段不再承认它们对父视图顶部的自动布局约束。为什么是这样?如何让 viewController 在导航控制器之外表现得像它一样?

如果我通过在所有东西周围悬挂 CRects 来做同样的布局,那么它会像我期望的那样完美地工作。

编辑:发现另一个有趣的工件,在自动布局模式下,如果我旋转模拟器,布局会自行修复并完美,如果我将它旋转回纵向,它会完全保持我认为应该的状态(白色并与顶部对齐) . 也许我应该加载视图,然后将其侧向旋转并向右旋转,哈!

伪代码:

--appdelegate--    

window.Root = new uinavcontroller with AutoLayoutController as root
window.makewindowkeyandvisible


--autolayoutcontroller--    

In ViewDidLoad
view.backgroundcolor = white
add(new button)
add(new textfield)
view.addConstraints(new constraint (button.top == view.top + padding)
view.addConstraints(new constraint (textfield.top == view.top + padding)
view.addConstraints(new constraint (textfield.right = button.left)

显示我期望的结构和弹簧: 结构和弹簧

AutoLayout 拉扯床: 自动布局失败

4

1 回答 1

1

我将 ViewController 的视图设置为不 TranslatesAutoresizingMaskIntoConstraints。这使得视图变成了一个自动布局视图,它的高度和宽度为 0,0。在关闭它并返回到仅视图控制器的基本视图的自动调整大小,并为所有子视图使用自动布局之后......它按预期工作。

于 2013-07-29T02:53:41.503 回答