子视图具有自动布局的XIB

时间:2015-03-21 08:56:40

标签: ios uiview autolayout xib xcode-storyboard

我创建了一个XIB并使用了AutoLayout。如果我在预览平底锅中检查它,它显示完美。 enter image description here

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

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

这次散布所有视图,如下图所示。 enter image description here

我启用了日志记录并检查了SubView的框架,但XIB(SubView)的框架根据UIViewController的视图进行了更改,但是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中一样正常工作?

2 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:0)

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

heirarchy就像是,

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

但现在我改变它如下,

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

它有效。