xib 使用自动布局在添加为子视图时不显示
xib using autolayout not showing when added as subview
我用 xib 创建了一个 UIViewController
A 以实现视图的可重用性。
在 xib 中,我简单地添加了另一个红色视图并将其约束设置为顶部、前导、尾随和底部 space 到红色视图的超级视图(这是我的 A 的视图)。
将A添加到另一个UIViewController
B作为B的ChildViewController
这样做:
// UIViewControllerB.m
UIViewControllerA *A = [UIViewControllerA alloc] initWithNibName:@"UIViewControllerA" bundle: nil]];
[A.view setFrame:CGRectMake(0,0, self.view.size.width, self.view.size.height/2)];
[self addChildViewController:A];
[self.view addSubview:A.view];
[self.A didMoveToParentViewController:self];
没有红色或其他任何东西出现。
不过我试过了[self.A.view setTranslatesAutoresizingMaskIntoConstraints:NO];
这似乎使我的约束变得无用,实际上并没有显示红色视图。
当我使用 xib 并需要一些额外的自动布局视图时,我是否必须编写整个代码(UI 元素和约束创建)?
感谢任何建议!
问题出在这一行:
[A.view setFrame:CGRectMake(0,0, self.view.size.width, self.view.size.height/2)];
相反,给这个视图约束。
当你将一组使用自动布局的视图插入到一组使用自动布局的视图中时,你必须使用自动布局来定位它。
我用 xib 创建了一个 UIViewController
A 以实现视图的可重用性。
在 xib 中,我简单地添加了另一个红色视图并将其约束设置为顶部、前导、尾随和底部 space 到红色视图的超级视图(这是我的 A 的视图)。
将A添加到另一个UIViewController
B作为B的ChildViewController
这样做:
// UIViewControllerB.m
UIViewControllerA *A = [UIViewControllerA alloc] initWithNibName:@"UIViewControllerA" bundle: nil]];
[A.view setFrame:CGRectMake(0,0, self.view.size.width, self.view.size.height/2)];
[self addChildViewController:A];
[self.view addSubview:A.view];
[self.A didMoveToParentViewController:self];
没有红色或其他任何东西出现。
不过我试过了[self.A.view setTranslatesAutoresizingMaskIntoConstraints:NO];
这似乎使我的约束变得无用,实际上并没有显示红色视图。
当我使用 xib 并需要一些额外的自动布局视图时,我是否必须编写整个代码(UI 元素和约束创建)?
感谢任何建议!
问题出在这一行:
[A.view setFrame:CGRectMake(0,0, self.view.size.width, self.view.size.height/2)];
相反,给这个视图约束。
当你将一组使用自动布局的视图插入到一组使用自动布局的视图中时,你必须使用自动布局来定位它。