我正在尝试在iOS 6中使用约束,并希望将标签与另一个标签对齐。只需按一下按钮即可动态创建一个标签和约束。这是一个非常简单的例子,但我收到了一个有线错误,我不知道是什么原因。
代码:
- (IBAction)addToLog:(UIButton *)sender {
UILabel *labelLastTime = [[UILabel alloc]initWithFrame:CGRectMake(20, 359, 92, 42)];
labelLastTime.text = [NSString stringWithFormat:@"%@kg x %@", self.selectedPickerWeight, self.selectedPickerRepetitions];
labelLastTime.font = [UIFont boldSystemFontOfSize:17.0];
labelLastTime.textAlignment = NSTextAlignmentCenter;
labelLastTime.textColor = [UIColor colorWithRed:133.0/255.0 green:133.0/255.0 blue:133.0/255.0 alpha:1.0];
labelLastTime.backgroundColor = [UIColor colorWithRed:228.0/255.0 green:228.0/255.0 blue:228.0/255.0 alpha:1.0];
labelLastTime.layer.borderColor = [UIColor colorWithRed:185.0/255.0 green:185.0/255.0 blue:185.0/255.0 alpha:1.0].CGColor;
labelLastTime.layer.borderWidth = 1;
labelLastTime.layer.cornerRadius = 5;
[self.view setTranslatesAutoresizingMaskIntoConstraints:NO];
[self.view addSubview:labelLastTime];
NSLayoutConstraint *cn = [NSLayoutConstraint constraintWithItem:labelLastTime
attribute:NSLayoutAttributeTop
relatedBy:NSLayoutRelationEqual
toItem:self.labelTodayVsLastTime
attribute:NSLayoutFormatAlignAllBottom
multiplier:1.0
constant:5.0];
[self.view addConstraint:cn];
}
错误:
由于未捕获的异常'NSInvalidArgumentException'而终止应用程序,原因:'无法在descriptionForLayoutAttribute_layoutItem_coefficient中创建描述。什么都没有'
当我应用约束时发生错误,而不是在我设置时。我在
之前设置了一个断点[self.view addConstraint:cn]
当我检查结果时,我得到这个4的零值
container, markerAndPositiveExtraVar, negativeExtraVar and _flange
答案 0 :(得分:2)
NSLayoutConstraint *cn = [NSLayoutConstraint constraintWithItem:labelLastTime attribute:NSLayoutAttributeTop relatedBy:NSLayoutRelationEqual toItem:self.labelTodayVsLastTime attribute:NSLayoutFormatAlignAllBottom multiplier:1.0 constant:5.0];
我遇到的问题与约束定义略有不同,原因是Xcode自动完成错误。
查看第二条attribute:
行。你可能想要attribute: NSLayoutAttributeBottom
。
NSLayoutFormatAlignAllBottom
用于构建NSLayoutFormatOptions
位掩码,用于constraintsWithVisualFormat:options:metrics:views:
之类的内容。