使用Autolayout将XIB的根视图动态调整为其内容的大小

Mis*_*cha 9 xcode resize constraints interface-builder autolayout

我在Xcode中创建一个XIB并添加一个简单的视图作为子视图:

具有rootview和子视图的XIB

我想要实现的是子视图具有固定的大小,rootview会自动调整大小到该子视图的大小,并在其周围留下20.0的边距:

调整大小的XIB

所以我给子视图添加了固定宽度和固定高度约束.然后我为20.0边距添加了四个约束:

约束 查看显示约束

由于superview没有任何约束,因此既不应该有歧义也不应该有冲突的约束:我希望superview缩小以匹配约束.然而,Xcode抱怨:

警告

如果rootview具有固定大小并且看起来是这种情况,那么这些约束只会相互矛盾.所以我的问题是:如何使XIB的rootview灵活,以便动态调整其大小以匹配其内容?

(甚至可以使用Interface Builder吗?)

Ban*_*tor 2

如何使 XIB 的 rootview 变得灵活,以便动态调整其大小以匹配其内容?

不可能的界面生成器。

由于超级视图没有任何约束,因此不应存在歧义或冲突的约束

这不仅仅是一个超级景观。它也是笔尖中的一个对象。我们为此类视图定义模拟尺寸。这可以用来消除错误。但同样这些只是模拟。

这个 rootView 是视图控制器视图吗?如果是的话,我不明白你为什么要尝试将其宽度固定为 280,高度固定为 168。

如果此视图是您要添加到另一个“父”视图的自定义视图。然后,您应该将模拟尺寸更改为 280,高度为 168,并且将其添加为子视图时,您需要添加两个约束以将此根视图放置在“父”视图中。