iOS:addConstraints:崩溃的应用程序

Rob*_*way 3 iphone objective-c ios nslayoutconstraint

问题

我似乎无法将Auto Layout应用到我现有的项目中.

细节

之前我遇到了同样的问题,因为这个问题presentViewController:在iOS <6(AutoLayout)上崩溃但是没有提供的答案对我来说是一个解决方案:我正在使用没有xib的所有故事板视图.我的"使用自动布局"设置已经关闭,我只使用iOS 6.

我的视图控制器最初崩溃,所以我设置了延迟添加的约束,现在我的应用程序在任何addConstraints:调用期间崩溃.最糟糕的是它不会告诉我原因.

我将链接我的代码,但它很直接.

-(void)addAllConstraints
{
    NSDictionary * views = NSDictionaryOfVariableBindings(_memoryImage, _peopleView, _contentHolder, _commentsTableView);
    NSArray * constraints = [NSLayoutConstraint constraintsWithVisualFormat:@"V:[_memoryImage]-50-[_peopleView]-0-[_contentHolder]-0-[_commentsTableView]" options:0 metrics:nil views:views];
    NSLog(@"Views %@, Constraints %@", views, constraints);
    [_peopleView addConstraints:constraints];
    [_memoryImage addConstraints:constraints];
    [_contentHolder addConstraints:constraints];
   [_commentsTableView addConstraints:constraints];
}
Run Code Online (Sandbox Code Playgroud)

应用程序在_peopleView调用addConstraints时崩溃了.视图和NSLayoutConstraints都已成功创建.

有任何想法吗?谢谢,节日快乐.

编辑:

添加崩溃日志以显示没有任何有用的信息显示:

2012-12-25 10:40:13.936 -----[4955:907] Views {
"_commentsTableView" = "<UITableView: 0x1eb6be00; frame = (0 372; 320 100); clipsToBounds = YES; gestureRecognizers = <NSArray: 0x1e51ce00>; layer = <CALayer: 0x1e51cee0>; contentOffset: {0, 0}>";
"_contentHolder" = "<UIView: 0x1e5c6590; frame = (0 270; 320 112); layer = <CALayer: 0x1e5c27f0>>";
"_memoryImage" = "<UIButton: 0x1e5c4aa0; frame = (0 0; 320 280); opaque = NO; layer = <CALayer: 0x1e5c4b60>>";
"_peopleView" = "<UIView: 0x1f0ceea0; frame = (0 230; 320 50); layer = <CALayer: 0x1f0cf790>>";

Constraints (
"NSLayoutConstraint:0x1e51a880 V:[UIButton:0x1e5c4aa0]-(50)-[UIView:0x1f0ceea0]",
"NSLayoutConstraint:0x1e5ba4e0 V:[UIView:0x1f0ceea0]-(0)-[UIView:0x1e5c6590]",
"NSLayoutConstraint:0x1e51b860 V:[UIView:0x1e5c6590]-(0)-[UITableView:0x1eb6be00]"
)


}  
   (lldb) 
Run Code Online (Sandbox Code Playgroud)

rde*_*mar 6

应该将约束添加到作为子视图的超级视图的视图中.因此,如果这些对象在您的主视图中,那么您应该(并且没有其他addConstraints:行):

[self.view addConstraints:constraints];
Run Code Online (Sandbox Code Playgroud)

此外,你的字典,视图,应该是零终止(我不知道这是否是必要的.我已经注意到在Apple示例中他们没有这样做,但函数定义显示为nil) .