使用Interface Builder和Autolayout在UIScrollView中正确调整UILabel的大小?

时间:2014-05-12 19:51:41

标签: ios uiscrollview autolayout

我在界面构建器中创建了一个简单的视图设置。这是它的外观:

IB View Layout

视图层次结构很简单:

view
- scrollView
-- label

滚动视图显示为grey背景锚定到其超级视图顶部,前导,尾随和底部约束为0.

标签显示为yellow背景,并具有所示的约束。此外,标签的横向和纵向均为content hugging priority 1000,横向和纵向的content compression resistance priority均为1000

纵向打印时,标签尺寸正确:

Portrait Orientation Screenshot

然而,在横向方向上,标签的水平尺寸不正确(我打算用标签填充屏幕的宽度,减少约束插图,如图所示):

Landscape Orientation Screenshot

如何在横向水平方向正确调整此标签尺寸?

2 个答案:

答案 0 :(得分:12)

有一种解决方案。

1。将UIScrollView添加到容器(UIView),条件为零: enter image description here

enter image description here

2. 为Label添加约束:top,bottom,leading,trailing spaces = 20.

3. 添加约束: label.width = container.width - 40

  • 为此,在视图结构树中选择标签,点击ctrl并拉动 到容器。并选择Equal Widths。

enter image description here

  • 然后选择创建的约束并转到其Utilities并进行设置 常数值为40。

enter image description here

您应该获得以下组件: enter image description here

运行应用程序,转到横向,它可以正常工作!

enter image description here

希望很清楚。最诚挚的问候。

答案 1 :(得分:-3)

很难分辨哪些约束要添加/删除以获得您想要的内容,因为iOS保留在不可能满足所有约束条件时调整约束的权利。

我使用与UILabel的子视图相同的视图创建一个空白项目,并制定一些约束以使UILabel在景观上正确调整大小。

enter image description here

必须检查:

  • 确保从pin选项设置垂直/水平间距约束,如下所示,并尝试手动删除不需要的约束。

enter image description here