自动布局不垂直添加间隙
Posted
技术标签:
【中文标题】自动布局不垂直添加间隙【英文标题】:Autolayout not adding gap vertically 【发布时间】:2017-09-02 18:30:52 【问题描述】:我是一个以编程方式解决自动布局的新手。
我定义了一个图像视图,添加到超级视图(UIViewController)。添加了使用视觉格式设置 gap 的约束。我没有提供价值只是破折号 (-) 。根据我所指的学习资源,如果不提供价值,我将获得 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)]];
【问题讨论】:
【参考方案1】:如果您希望始终使用边距,则需要设置:self.view.preservesSuperviewLayoutMargins = YES;
或者,您也可以更改边距:
self.view.layoutMargins = UIEdgeInsetsMake(8, 8, 8, 8);
self.view.preservesSuperviewLayoutMargins = YES;
否则视图将相应地扩大或缩小以适应。当您添加上述代码行时,您会注意到它默认为您添加了 8 个像素到所有约束。但是,水平约束现在可能看起来更大或看起来像 16。这是因为边距可以是 8、16 或 20。
明确指定您的尺寸总是更好。
【讨论】:
感谢您的帮助以上是关于自动布局不垂直添加间隙的主要内容,如果未能解决你的问题,请参考以下文章
UIScrollView 不能使用情节提要垂直滚动(使用自动布局)?
在水平和垂直的recyclerview中膨胀布局,具有recycler视图的FlexboxLayout添加视图水平自动垂直