子查看具有自动布局的 XIB

Subviewing an XIB having Auto-layout

我创建了一个 XIB 并使用了 AutoLayout。如果我在 Preview Pan 中检查它,它会完美显示。

现在我尝试加载该 NIB,然后使用以下代码将其作为子视图添加到另一个 ViewController 中:

myNibView = [[NSBundle mainBundle]loadNibNamed:@"CustomNib" owner:self options:nil].lastObject;
myNibView.translatesAutoresizingMaskIntoConstraints = NO;
[self.view myNibView];

这次它分散了所有的视图,如下图所示。

我启用了日志记录并检查了 SubView 的框架,但是 XIB(SubView) 的框架根据 UI 的视图进行了更改ViewController但是 XIB 的子视图没有安排。

2015-03-21 14:38:13.527 [3015:77723] newSubview.frame before = {{0, 0}, {420, 613}}
2015-03-21 14:38:13.633 [3015:77723] containerView.bounds after = {{0, 0}, {320, 504}}
2015-03-21 14:38:13.634 [3015:77723] newSubview.frame after = {{0, 0}, {320, 504}}

有什么想法,如何将 XIB 作为子视图添加到另一个中,同时保留其自动布局约束以像在 XIB 中那样正常工作?

不要使用 myNibView.translatesAutoresizingMaskIntoConstraints = NO;因为它删除了视图中的所有约束

我通过将 XIB 的所有子视图与 ScrollView 一起移动到另一个 UIView 中解决了这个问题。

层次结构就像,

XIB
--UIScrollView
----UIView 1
----UIView 2
----UIView 3
.
.

但是现在我改成了下面这样,

XIB
--UIView
----UIScrollView
------UIView 1
------UIView 4
------UIView 3
.
.
.

成功了。