【问题标题】:AutoLayout or not? How to position 3 subviews?自动布局与否?如何定位3个子视图?
【发布时间】: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


【解决方案1】:

取消选中自动布局,然后设置所有三个子视图的框架。 要么 如果你想要约束,那么你可以使用 NSLayoutConstraint 类来为你的子视图添加约束。

【讨论】:

  • NSLayoutConstraint 并以编程方式设置它们可能是正确的答案,但到目前为止我无法让它工作。我找到了这个blog.ijasoneverett.com/2014/02/…。我在底部布局指南中添加了高度约束,然后是垂直空间约束。仍在努力让它发挥作用,但进展甚微。
  • 接受这一点,因为这似乎与我能得到的问题解决方案最接近。使用我指出的文章,可以调整桌子的移动和高度。仍然没有它的工作,但认为有更多的限制是可能的。
【解决方案2】:

我建议不要关闭自动布局,尤其是因为您不能在逐个视图的基础上执行此操作。如果您倾向于使用 i18n 或想要确保您的应用程序在不同的屏幕分辨率/方向上表现良好,那么自动布局是必须的。

【讨论】:

  • 我同意关闭它也不是一个好主意,原因还有很多。另外,它无论如何都不能解决问题,只会延迟它。
【解决方案3】:

试试这个! 在情节提要中禁用使用自动布局。将您的三个视图放在视图控制器(view1、view2、view3)上。接下来转到尺寸检查器并为所有三个视图使用自动调整大小的蒙版。检查这个,这将帮助你 http://www.raywenderlich.com/50317/beginning-auto-layout-tutorial-in-ios-7-part-1

【讨论】:

    猜你喜欢
    • 2014-03-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-07-22
    • 2015-11-30
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多