【发布时间】:2014-05-13 04:05:55
【问题描述】:
我不知道如何在导航控制器中正确定位子视图。 我正在尝试定位视图、表格和另一个视图。
如果我关闭自动布局,那么顶视图和表格都可以,但我的底视图被推离屏幕。 使用自动布局,我将表格和底部视图都放在错误的位置:
我尝试按如下方式在 viewDidLoad 中设置框架(calendarPicker 位于导航栏下方的顶部),我希望 configPanel 位于底部,我在 Push 上隐藏底部栏。
self.eventsTable.frame = CGRectMake(0, CGRectGetMaxY(self.calendarPicker.frame),
self.eventsTable.bounds.size.width,
self.view.bounds.size.height - self.calendarPicker.bounds.size.height
);
self.configPanel.frame = CGRectMake(0, self.view.bounds.size.height,
self.configPanel.bounds.size.width,
self.view.bounds.size.height - self.configPanel.bounds.size.height
);
我应该依赖自动布局吗?我应该如何做我的约束? 我相信我的问题主要是由于表格的自动调整大小而出现的,但是鉴于我正在设置它的框架大小,为什么它不会改变?我不想删除自动布局,因为它用于情节提要中设计的其他视图,并且据我所知它适用于所有人? 除了设置单个控件的框架之外,我还有什么需要做的吗?
编辑: 我认为我最大的问题是自动布局和无法适当调整表格大小。如果我从视图底部向底部视图添加约束为 0,它最初会正确显示。然而,因此在调整表格和顶视图的大小时,表格将缩小底视图的大小以占用所有可用空间。 我需要强制 UITableView 不超过顶视图底部和下视图之间的高度,但仍然不确定如何执行此操作。 比较接近 删除表格换帧的代码修复了底部视图被推开的问题。然而,在这种情况下,当它改变大小的同时没有正确绘制时,顶视图会与表重叠:
【问题讨论】:
-
取消选中自动布局(我猜你已经完成了),然后对所有视图使用自动调整大小。自动调整大小在 xcode 的右侧属性面板中可用 - 大小检查器。让我知道这是否有帮助。
-
我假设你的意思是容器视图上的自动调整子视图?如果是这样,它已经完成了,但它仍然不起作用。
-
也许我不明白它应该如何工作,但如果没有一个答案真的有帮助,我是否还应该接受它们?如果您查看其中的大多数,则根本没有答案。不幸的是,这里所说的一切都没有让我更接近解决这个问题。在真正暗示某事之前,也许你应该看一下?
标签: ios positioning autolayout subview