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

我已经在界面构build器中创build了一个简单的视图设置。 以下是它的外观:

IB视图布局

视图层次结构很简单:

view - scrollView -- label 

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

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

在纵向方向上,标签尺寸正确:

肖像方向截图

然而,在横向方向上,标签的横向尺寸不正确(我打算用标签来填充屏幕的宽度,如图所示,限制较less):

风景方向截图

如何在水平方向上将此标签正确地水平放置?

有一个解决scheme给你。

1.用零约束将UIScrollView添加到容器 (UIView): 在这里输入图像说明

在这里输入图像说明

2.为标签添加约束:顶部,底部,引导,尾随空格= 20。

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

  • 为此,在视图结构树中select标签,点击ctrl并拉到容器。 并select等宽。

在这里输入图像说明

  • 然后select创build的约束,并转到其实用程序,并将常数值设置为40。

在这里输入图像说明

你应该得到以下组件: 在这里输入图像说明

运行应用程序,去风景,它的作品!

在这里输入图像说明

希望是明确的。 最好的祝福。

为了得到你想要的东西,很难分辨出哪些约束条件需要添加/删除,因为只要不可能满足所有的约束条件,iOS就会保留调整约束条件的权利。

我做了一个空白的项目,你有相同的观点( UILabel作为UIScrollView子视图),并作出一些约束,以获得在景观上正确调整UILabel。

在这里输入图像说明

但必须检查:

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

在这里输入图像说明