iOS Storyboard 约束未按预期运行

标签 ios uiscrollview autolayout uistoryboard uicontainerview

我正在尝试解决 Storyboard中的这些限制。我目前有一个容器 View ,它有一些约束和定位,可以完美地工作。它根据屏幕尺寸等调整大小。效果很好。

链接到该容器 View 的 View Controller 当前设置为Freeform,宽度为 306,高度为 315。在该 View Controller 内部,我有一个具有以下约束的 ScrollView .

enter image description here

所以它应该占据整个 View Controller 。在该 ScrollView 内部,我有很多元素、按钮、文本字段、标签等。例如,我有一个固定在 View 顶部的文本字段(顶部空间到 super View 0)。我还将 super View 的尾随和前导空格设置为 0。

如果我将 View Controller 从Freeform更改为Fixed,我希望 ScrollView 能够更改大小(确实如此),并且我希望它设置该文本字段的宽度与 ScrollView 和 View 相同(事实并非如此)。它保持 306 的宽度。即使它被设置为 superview 的尾随和前导空间设置为 0。

这会在 iPhone 4S 等设备中产生问题。我希望此 View 的元素在宽度方面缩小以适合该容器 View 。但它只允许水平滚动。

我想允许垂直滚动,因为它是一个表单,并且有很多表单元素等等。因此,对于较小的设备,他们应该能够向下滚动以查看所有元素。但我希望元素在宽度方面缩小或调整以适应较小的设备。

关于如何实现这一点有什么想法吗?

最佳答案

假设您的布局与此类似:

enter image description here

较小的浅蓝色 ViewController 的 ScrollView 始终固定为零。

左上角标签固定在前导:0 和顶部:0

右下角标签固定在 Trailing: 0 和 Bottom: 0

所有 4 个约束都与 SuperView 相关 - 即 ScrollView。

您还需要右下标签的 Y 位置约束 - 在本例中,我将其与左上标签相距 435“垂直间距”。

此时,一切都按照您现在所看到的方式进行。我在 Storyboard 中为 7+ 设置了它……如果我在 7+ 上运行它,它完全适合“开头”。但是...如果我运行 5 秒,右下角标签就会位于右侧,并且我们会得到水平滚动。

要解决这个问题,您需要向右下标签添加另一个尾随约束,但使其与持有 ScrollView 的 View 相关。

因此,选择右下角标签后,您应该会看到以下内容:

enter image description here

关于iOS Storyboard 约束未按预期运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43854732/

相关文章:

ios - 编码的自动布局对于 UITableView 无法正常工作

iOS 自动布局约束

objective-c - UIImageView 标签和点击手势问题

ios - 设置 PFQuery 顺序

ios - 使用插入功能时奇怪的 tableView 动画

iphone - UIScrollView:如何一次滚动一页

ios - 如何添加 "Align bottom to: parent view"系统约束?

ios - 无法覆盖 Swift 中的变量

iphone - 加载到 UIScrollview 中的图像尺寸错误

iphone - UIAccessibility VoiceOver 宣布 UIScrollView 的页码错误