具有动态尺寸的ios自动布局

时间:2017-01-05 17:51:28

标签: ios swift xcode autolayout

我的mandist(X/Y,XD/Y,D,right) :- XD is X+D, XD < 4. mandist(X/Y,X/YD,D,up) :- YD is Y+D, YD < 4. mandist(X/Y,XD/Y,D,left) :- XD is X-D, XD > 0. mandist(X/Y,X/YD,D,down) :- YD is Y-D, YD > 0. 内有一个视图,它有4个约束:左,右和底的空格为0,它有方面无线电。它看起来像这样:

UIViewController

我想插入具有动态尺寸的 ______ _ | | \ | | | | | |- ViewController | | | |______| | |______| <- View _/ UIView的中心,我希望它留在中心位置。我在代码中进行了大小调整,但现在我希望将其置于自动布局中心,但是当我水平和垂直居中时,它告诉我需要更多ImageView大小的约束。

如果ImageView留在中心并且自动布局不抱怨这些缺失的尺寸限制,我该怎么办?

2 个答案:

答案 0 :(得分:1)

根据您的问题,我假设您在Interface Builder中进行设置,如果我错了,请更正我。

您的问题是在编译时未完全指定布局。 UIImageView具有可以完成布局的内在内容大小,但由于您当时没有为图像视图设置图像,因此尚未指定。

您可以在UIImageView的尺寸检查器中设置占位符尺寸。这在运行时没有任何影响,但告诉编译器稍后会有内在的内容大小。

Placeholder intrinsic content size in Interface Builder

答案 1 :(得分:1)

一个简单的解决方案:

只需在Interface Builder中为图像视图设置图像。
(您可以使用您喜欢的任何图像作为占位符,并在运行时通过代码更改它。)

说明:

当您将具体图像指定给UIImageView时,它会假定intrinsicContentSize等于图像的大小。这样它有一个定义的宽度和高度,如果你约束它的位置(x和y),那么布局是明确的,Interface Builder不会抱怨(即如果你的布局的其余部分是完美的)。

如果您不想将图像用作占位符,则必须手动设置图像视图的宽度和高度,以便在iCaramba's answer中所述的Interface Builder中使用。