我是一名新手,以编程方式搞清楚autolayout。
我定义了一个imageview,添加到superview(UIViewController)。使用视觉格式添加约束来设置差距。我没有提供价值只是破折号( - )。根据资源,我指的是学习,没有提供价值我会得到8分差距。
我水平间隙但不垂直。
- (void)viewDidLoad {
[super viewDidLoad];
UIImageView * thumbnailImageView = [[UIImageView alloc] init];
thumbnailImageView.backgroundColor = [UIColor greenColor];
thumbnailImageView.image = [UIImage imageNamed:@"thumbnailImage"];
thumbnailImageView.contentMode = UIViewContentModeScaleAspectFill;
thumbnailImageView.layer.masksToBounds = true;
thumbnailImageView.translatesAutoresizingMaskIntoConstraints = false;
[self.view addSubview:thumbnailImageView];
[self.view addConstraints:[NSLayoutConstraint
constraintsWithVisualFormat:@"V:|-[thumbnailImageView]-|" options:0
metrics:nil
views:NSDictionaryOfVariableBindings(thumbnailImageView)]];
[self.view addConstraints:[NSLayoutConstraint
constraintsWithVisualFormat:@"H:|-[thumbnailImageView]-|" options:0
metrics:nil
views:NSDictionaryOfVariableBindings(thumbnailImageView)]];
答案 0 :(得分:1)
如果您希望始终使用边距,则需要设置:self.view.preservesSuperviewLayoutMargins = YES;
或者,您也可以更改边距:
self.view.layoutMargins = UIEdgeInsetsMake(8, 8, 8, 8);
self.view.preservesSuperviewLayoutMargins = YES;
否则视图会相应增大或缩小以适应。添加上面的代码行时,您会注意到默认情况下它为所有约束添加了8个像素。但是,水平约束现在可能看起来更大或看起来像是16 ..这是因为边距可以是8,16或20。
最好明确指定尺寸。