如何确保图像始终位于顶部?

时间:2015-10-20 08:26:28

标签: ios swift autolayout

我使用UIImage以Aspect Fit模式显示我的测试图像。我希望它始终位于顶部并尽可能多地填充空间(见下图)。

如何设置约束,以便图像始终位于顶部(较高设备上没有任何间隙)?

其他信息: 我正在使用Xcode 7.0.1 为iOS 8及更高版本开发。 我正在使用自动布局。

我试图将“> = 0”设置为底部约束,这样底部间隙可以达到双倍高度,但它不起作用。

有什么建议吗?

enter image description here

3 个答案:

答案 0 :(得分:1)

我建议您以编程方式计算imageView的大小并直接设置框架。 在viewController的viewWillAppearviewDidLoad方法中执行此操作。

这将解决问题

UIImage *image; // yourImage
CGFloat whRatio = image.size.width/image.size.height;
if (whRatio > 1) {
    // there will be borders on top -> adjust your view
    imageView.frame = CGRectMake(imageView.frame.origin.x,
                                 imageView.frame.origin.y,
                                 imageView.frame.size.width,
                                 imageView.frame.size.height / whRatio);
}

您可能想要考虑在图像较窄的情况下调整imageView,以完全防止出现空白。

答案 1 :(得分:1)

我认为你有正确的约束。您是否尝试将contentMode设置为“Scale to fill”。 也许你正在使用aspectFit

答案 2 :(得分:0)

这里我要添加一个图像,显示如何为包含图像的视图以及视图内的图像设置约束。

如果有人想详细查看我的实验,我已通过以下链接进行了公开回购。它包括故事板解决方案分支以及代码解决方案分支。

https://bitbucket.org/AndrejBB/test-layout

enter image description here