我必须添加标签和文本字段一行编程与自动布局约束,但项目崩溃



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

-(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];
}

最新更新