我应该使用什么约束来让图像视图方面填充其父视图的下半部分



我想创建一个故事板作为我的启动屏幕。我希望屏幕的下半部分有一个图像填充空间,同时保持其宽高比(它可以向下溢出,或左&为了保持长宽比,我不介意是哪个)。屏幕的上半部分将清空。

我为此奋斗了几个小时,但没有任何进展——我甚至不能让图像填满屏幕的下半部分,更不用说保持长宽比了。

我应该使用什么约束来让图像视图方面填充其父视图的下半部分?

就约束而言,你可以设置图像视图的高度等于其父视图的高度,然后为该约束添加0.5的倍数,这样图像视图的高度是其父视图的一半;然后将右、左、下边距与父视图的右、左、下边距对齐。

要保持宽高比并用图像填充图像视图,可以将视图的内容模式设置为aspect fill。

但是由于Aspect Fill仍然会在垂直和水平方向将图像居中,如果你想让图像"向下溢出,或者左&而不是向上,你可以通过编程裁剪图像,只包括在图像视图中可见的图像的顶部部分。例如,要只显示图像的上半部分:

override func viewDidLayoutSubviews() {
    imageView.layer.contentsRect = CGRect(x: 0, y: 0, width: 1.0, height: 0.5)
}

我不知道是否可能只使用自动布局,但这里是我如何做到的:

你可以尝试在superview中添加前导、底和尾约束,并将imageView的高度设置为一个随机值(如果你使用的是web服务,你可以在图片下载后立即更改这个值)。现在,您可以在文件中创建这个高度约束的出口。一旦你得到了图像,你就可以调整它的大小以适应屏幕,同时保持宽度到屏幕边界并保持其长宽比。根据获得的图像的大小更新高度约束。

我推荐自动布局。

首先拖放一个uiview(在你将其隐藏之后)让它1px的高度不影响宽度(如果你想让它从左到右0像素)。现在把这个视图居中。

拖动你的图像视图,并与视图保持垂直间距(当然还有左下角和右下角)

最新更新