0

我的代码如下,以及我的应用程序的图像。基本上我想在viewDidLoad这个视图控制器的方法中添加一个约束来对齐两个标签,以便它们从相同的 x 位置开始。但是,无论出于何种原因,我都会收到此警告:

指向整数转换的不兼容指针将“UIView *”发送到“NSLayoutRelation”类型的参数(又名“枚举 NSLayoutRelation”);

当我运行该应用程序时,我收到以下错误:

* 由于未捕获的异常“NSInvalidArgumentException”而终止应用程序,原因:“* +[NSLayoutConstraint constraintWithItem:attribute:relatedBy:toItem:attribute:multiplier:constant:]: Unknown layout attribute”

在此处输入图像描述

NSLayoutConstraint *constraint = [NSLayoutConstraint constraintWithItem:self.carMakeLabel attribute:NSLayoutRelationEqual relatedBy:self.view toItem:self.carModelLabel attribute:NSLayoutAttributeLeading multiplier:1.0 constant:0];

[self.view addConstraint:constraint];
4

2 回答 2

3

尝试:

NSLayoutConstraint *constraint = [NSLayoutConstraint constraintWithItem:self.carMakeLabel attribute:NSLayoutAttributeLeading relatedBy:NSLayoutRelationEqual toItem:self.carModelLabel attribute:NSLayoutAttributeLeading multiplier:1.0 constant:0];

[self.view addConstraint:constraint];

确保 self.carModelLabel 和 self.carMakeLabel 都在 self.view 的视图层次结构中。

于 2012-12-12T03:03:53.787 回答
-1

该方法的签名是

+(id)constraintWithItem:(id)view1 attribute:(NSLayoutAttribute)attr1 relatedBy:(NSLayoutRelation)relation toItem:(id)view2 attribute:(NSLayoutAttribute)attr2 multiplier:(CGFloat)multiplier constant:(CGFloat)c;

你用过

    constraintWithItem:self.carMakeLabel attribute:NSLayoutRelationEqual relatedBy:self.view toItem:self.carModelLabel attribute:NSLayoutAttributeLeading multiplier:1.0 constant:0];

发送到属性的数据类型是关系类型:NSLayoutRelationEqual

我认为您的第一个属性和 relatedBy 参数已切换。

你可能需要纠正那个

于 2012-12-12T02:56:47.787 回答