嗨,我想以编程方式使用添加UIViews
自动布局。 在这里我的主要要求是我想设置firstView(即myView1
)尾部空间是“30”,我想设置第二个视图(即myView2
)是从第一个视图30像下面的距离。如何以编程方式使用自动布局以编程方式添加UIviews
为此,我编写了一些代码(使用视觉格式和约束项目格式),但这是行不通的。
代码:
- (void)viewDidLoad {
[super viewDidLoad];
// Do any additional setup after loading the view.
UIView *myView1 = [[UIView alloc] init];
myView1.backgroundColor = [UIColor redColor];
myView1.translatesAutoresizingMaskIntoConstraints = NO;
[self.view addSubview:myView1];
UIView *myView2 = [[UIView alloc] init];
myView2.backgroundColor = [UIColor orangeColor];
myView2.translatesAutoresizingMaskIntoConstraints = NO;
[self.view addSubview:myView2];
[self.view addConstraints:[NSLayoutConstraint
constraintsWithVisualFormat:@"V:|-[myView1(==50)]-50-|"
options:0
metrics:nil
views:NSDictionaryOfVariableBindings(myView1)]];
[self.view addConstraints:[NSLayoutConstraint
constraintsWithVisualFormat:@"V:|-[myView2(==50)]-50-|"
options:0
metrics:nil
views:NSDictionaryOfVariableBindings(myView2)]];
//Constraints with item formate
NSLayoutConstraint *constraint = [NSLayoutConstraint constraintWithItem:myView1 attribute:NSLayoutAttributeTrailing relatedBy:NSLayoutRelationEqual toItem:self.view attribute:NSLayoutAttributeTrailing multiplier:1.0f constant:-30.f];
[self.view addConstraint:constraint];
constraint = [NSLayoutConstraint constraintWithItem:myView1 attribute:NSLayoutAttributeWidth relatedBy:NSLayoutRelationEqual toItem: nil attribute:NSLayoutAttributeNotAnAttribute multiplier:1.0f constant:50.0f];
[self.view addConstraint:constraint];
NSLayoutConstraint*constraint1 = [NSLayoutConstraint constraintWithItem:myView2 attribute:NSLayoutAttributeLeading relatedBy:NSLayoutRelationEqual toItem:myView1 attribute:NSLayoutAttributeTrailing multiplier:1.0f constant:-30.f];
[self.view addConstraint:constraint1];
constraint1 = [NSLayoutConstraint constraintWithItem:myView2 attribute:NSLayoutAttributeWidth relatedBy:NSLayoutRelationEqual toItem: nil attribute:NSLayoutAttributeNotAnAttribute multiplier:1.0f constant:50.0f];
[self.view addConstraint:constraint1];
//Constraints with visual formate
[self.view addConstraints:[NSLayoutConstraint
constraintsWithVisualFormat:@"H:|-[myView1(==50)]-20-[myView(==50)]-30-|"
options:0
metrics:nil
views:NSDictionaryOfVariableBindings(myView1,myView2)]];
}
,你可以尝试的包装https://github.com/robb/Cartography – Shoaib
的[创建布局编程限制(可能重复http://stackoverflow.com/问题/ 12826878 /创建布局约束 - 以编程方式) –