我必须使用自动布局约束以编程方式在一行中添加标签和文本字段,但项目崩溃

I have to add label and text field in one row programmatically with autolayout constraint but project crash

这是我的代码。 我必须通过添加自动布局约束以编程方式在一行中添加标签和文本字段,但由于约束设置不正确导致项目崩溃 请帮我解决这个错误

-(void)autoLayoutProgrametacally
{

UIImageView *imgView = [[UIImageView alloc] init];
imgView.contentMode = UIViewContentModeScaleAspectFit;
imgView.translatesAutoresizingMaskIntoConstraints = NO;
UIImage *image =[UIImage imageNamed:@"background.jpg"];
[imgView setImage:image];
[self.view addSubview:imgView];

NSArray *imageViewHorConst = [NSLayoutConstraint constraintsWithVisualFormat:@"H:|-0-[imgView]-0-|" options:0 metrics:nil views:NSDictionaryOfVariableBindings(imgView)];
NSArray *imageViewVerConst = [NSLayoutConstraint constraintsWithVisualFormat:@"V:|-0-[imgView]-0-|" options:0 metrics:nil views:NSDictionaryOfVariableBindings(imgView)];

[self.view addConstraints:imageViewHorConst];
[self.view addConstraints:imageViewVerConst];


UILabel *FirstName = [[UILabel alloc] init];
[FirstName setTranslatesAutoresizingMaskIntoConstraints:NO];
[FirstName setNumberOfLines:1];
[FirstName setText:@"First Name:"];
[self.view addSubview:FirstName];
UILabel *LastName = [[UILabel alloc] init];
[LastName setTranslatesAutoresizingMaskIntoConstraints:NO];
[LastName setNumberOfLines:1];
[LastName setText:@"Last Name:"];
[self.view addSubview:LastName];
UITextField *txtFirstName=[[UITextField alloc]init];
[txtFirstName setTranslatesAutoresizingMaskIntoConstraints:NO];
UITextField *txtLastName=[[UITextField alloc]init];
[txtLastName setTranslatesAutoresizingMaskIntoConstraints:NO];




NSArray *FirstNameVerConst = [NSLayoutConstraint constraintsWithVisualFormat:@"V:|-(10)-[FirstName]" options:NSLayoutFormatAlignAllTop | NSLayoutFormatAlignAllBottom metrics:nil views:NSDictionaryOfVariableBindings(FirstName)];
NSArray *FirstNameHorConst = [NSLayoutConstraint constraintsWithVisualFormat:@"H:|-(10)-[FirstName(txtFirstName)]-(10)-[txtFirstName]" options:NSLayoutFormatAlignAllTop | NSLayoutFormatAlignAllBottom metrics:nil views:@{@"FirstName":FirstName, @"txtFirstName":txtFirstName}];
NSArray *LastNameVerConst = [NSLayoutConstraint constraintsWithVisualFormat:@"V:|-10-[LastName]" options:NSLayoutFormatAlignAllTop | NSLayoutFormatAlignAllBottom metrics:nil views:NSDictionaryOfVariableBindings(LastName)];
NSArray *LastNameHorConst = [NSLayoutConstraint constraintsWithVisualFormat:@"H:|-10-[LastName(txtLastName)]-(10)-[txtLastName]" options:NSLayoutFormatAlignAllTop | NSLayoutFormatAlignAllBottom metrics:nil views:@{@"LastName":LastName, @"txtLastName":txtLastName}];


[self.view addConstraints:FirstNameVerConst];
[self.view addConstraints:FirstNameHorConst];
[self.view addConstraints:LastNameVerConst];
[self.view addConstraints:LastNameHorConst];
}

我已经编辑了代码...试试这个也许会有帮助... 用这个替换你的代码...

-(void)autoLayoutProgrametacally
{

UIImageView *imgView = [[UIImageView alloc] init];
imgView.contentMode = UIViewContentModeScaleAspectFit;
imgView.translatesAutoresizingMaskIntoConstraints = NO;
UIImage *image =[UIImage imageNamed:@"background.jpg"];
[imgView setImage:image];
[self.view addSubview:imgView];

NSArray *imageViewHorConst = [NSLayoutConstraint constraintsWithVisualFormat:@"H:|-0-[imgView]-0-|" options:0 metrics:nil views:NSDictionaryOfVariableBindings(imgView)];
NSArray *imageViewVerConst = [NSLayoutConstraint constraintsWithVisualFormat:@"V:|-0-[imgView]-0-|" options:0 metrics:nil views:NSDictionaryOfVariableBindings(imgView)];

[self.view addConstraints:imageViewHorConst];
[self.view addConstraints:imageViewVerConst];


UILabel *FirstName = [[UILabel alloc] init];
[FirstName setTranslatesAutoresizingMaskIntoConstraints:NO];
[FirstName setNumberOfLines:1];
[FirstName setText:@"First Name:"];
FirstName.textColor=[UIColor whiteColor];
[self.view addSubview:FirstName];

UITextField *txtFirstName=[[UITextField alloc]init];
txtFirstName.placeholder=@"FirstName";
txtFirstName.contentMode = UIViewContentModeScaleAspectFit;
txtFirstName.translatesAutoresizingMaskIntoConstraints = NO;
txtFirstName.backgroundColor = [UIColor whiteColor];
txtFirstName.font = [UIFont systemFontOfSize:10.0];
txtFirstName.leftViewMode = UITextFieldViewModeAlways;
[self.view addSubview:txtFirstName];

UILabel *LastName = [[UILabel alloc] init];
[LastName setTranslatesAutoresizingMaskIntoConstraints:NO];
[LastName setNumberOfLines:1];
[LastName setText:@"Last Name:"];
LastName.textColor=[UIColor whiteColor];
[self.view addSubview:LastName];

UITextField *txtLastName=[[UITextField alloc]init];
txtLastName.placeholder=@"LastName";
txtLastName.contentMode = UIViewContentModeScaleAspectFit;
txtLastName.translatesAutoresizingMaskIntoConstraints = NO;
txtLastName.backgroundColor = [UIColor whiteColor];
txtLastName.font = [UIFont systemFontOfSize:10.0];
txtLastName.leftViewMode = UITextFieldViewModeAlways;
[self.view addSubview:txtLastName];




NSDictionary *metrics = @{@"height":@30.0};

NSArray *FirstNameVerConst = [NSLayoutConstraint constraintsWithVisualFormat:@"V:|-(30)-[FirstName(25)]" options:NSLayoutFormatAlignAllTop | NSLayoutFormatAlignAllBottom metrics:nil views:NSDictionaryOfVariableBindings(FirstName)];
NSArray *FirstNameHorConst = [NSLayoutConstraint constraintsWithVisualFormat:@"H:|-15-[FirstName(txtFirstName)]-10-[txtFirstName(250)]-10-|" options:NSLayoutFormatAlignAllTop | NSLayoutFormatAlignAllBottom metrics:metrics views:NSDictionaryOfVariableBindings(FirstName,txtFirstName)];



NSArray *LastNameVerConst = [NSLayoutConstraint constraintsWithVisualFormat:@"V:|-[FirstName(LastName)]-[LastName(25)]" options:0 metrics:nil views:@{@"FirstName":FirstName , @"LastName":LastName }];


NSArray *LastNameHorConst = [NSLayoutConstraint constraintsWithVisualFormat:@"H:|-15-[LastName(txtLastName)]-10-[txtLastName(250)]-10-|" options:NSLayoutFormatAlignAllTop | NSLayoutFormatAlignAllBottom metrics:metrics views:NSDictionaryOfVariableBindings(LastName,txtLastName)];

[self.view addConstraints:FirstNameVerConst];
[self.view addConstraints:FirstNameHorConst];
[self.view addConstraints:LastNameVerConst];
[self.view addConstraints:LastNameHorConst];
}