子查看具有自动布局的 XIB
Posted
技术标签:
【中文标题】子查看具有自动布局的 XIB【英文标题】:Subviewing an XIB having Auto-layout 【发布时间】:2015-03-21 08:56:39 【问题描述】:我创建了一个 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) 的框架根据 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 中一样?
【问题讨论】:
【参考方案1】:不要使用 myNibView.translatesAutoresizingMaskIntoConstraints = NO;因为它删除了视图中的所有约束
【讨论】:
【参考方案2】:我通过将 XIB 的所有子视图与 ScrollView 一起移动到另一个 UIView 中来解决了这个问题。
等级制度是这样的,
XIB
--UIScrollView
----UIView 1
----UIView 2
----UIView 3
.
.
但现在我将其更改如下,
XIB
--UIView
----UIScrollView
------UIView 1
------UIView 4
------UIView 3
.
.
.
它奏效了。
【讨论】:
以上是关于子查看具有自动布局的 XIB的主要内容,如果未能解决你的问题,请参考以下文章
xib 中的自动布局 - 子视图的高度与导航栏和标签栏之间的空间成正比