在我的根视图控制器中,我将子视图控制器的视图添加为子视图,如下所示:
ChildViewController *cvc = [[ChildViewController alloc] init];
[self addChildViewController:cvc];
[self.view addSubview:cvc.view];
[cvc didMoveToParentViewController:self];
Run Code Online (Sandbox Code Playgroud)
我现在想使用NSLayoutConstraint在父视图(self.view)中定位cvc.view,这样cvc.view定位在父视图底部上方25个点.我的理解是以下应该有效:
UIView *superview = self.view;
UIView *childview = cvc.view;
NSLayoutConstraint *cn =
[NSLayoutConstraint withItem:childview
attribute:NSLayoutAttributeBottom
relatedBy:NSLayoutRelationEqual
toItem:superview attribute:NSLayoutAttributeBottom
multiplier: 1.0
constant: -25.0];
[superview addConstraint: cn];
Run Code Online (Sandbox Code Playgroud)
但是约束在运行时失败了.我认为最初可能是子视图中的自动调整掩码导致了问题(并且在自动布局上遵循WWDC 2012简介视频),所以我设置了[childview setTranslatesAutoresizingMaskIntoConstraints:NO],但是子视图根本无法显示.
我究竟做错了什么?
我的UIViewController类有一个包含几个IBOutlet对象的IBOutletCollection.我知道需要在viewDidUnload中将保留的出口设置为nil,但是我是否还需要将IBOutletCollection设置为nil?或者它应该在dealloc中被释放?还是完全独自留下?