iOS如何保持UIImageView的纵横比但填充宽度

13
这是我在iOS 8和XCode 6下从头开始编写的第一个应用程序,所以这些间距问题一直在困扰着我。在下面的图中,您可以看到我有一个UIImageView,我希望它成为一个正方形,但我也希望它能够横跨屏幕的宽度。它有一个宽度和高度值,所以当应用程序运行时,屏幕变宽了,所以它最终只是一个小盒子在左上角。我已经尝试以各种方式调整约束条件,但当我进行限制时,图像会放大到全尺寸,并覆盖屏幕之外的所有内容。我如何让它拉伸并保持1比1的长宽比呢?
编辑: 好的,我错了。不是UIImageView没有调整大小,而是整个视图。
3个回答

9

使用图像视图内容模式:

[self.imageView setContentMode:UIViewContentModeScaleAspectFill];

看起来您还希望框架的宽度填满屏幕。请使用以下约束:

  • 距离顶部、左侧和右侧的距离为0。
  • 高度等于宽度的约束条件。
  • 图像比例1:1的约束条件。

然后图像视图应该适当地调整大小。


1
这难道不只是影响视图中的图像而不是视图本身吗? - Jhorra
我更新了我的问题并提供了更多细节。调整不仅限于图像,而是整个视图。 - Jhorra
@Jhorra,我更新了我的答案,希望这对您有用。 - Enrico Susatyo
为了实现1:1的比例限制: [self.yourview addConstraint:[NSLayoutConstraint constraintWithItem:self.yourview attribute:NSLayoutAttributeHeight relatedBy:NSLayoutRelationEqual toItem:self.yourview attribute:NSLayoutAttributeWidth multiplier:(self.yourview.frame.size.height / self.yourview.frame.size.width) constant:0]]; - Skoua

3
将两侧和顶部都约束到父视图。你也可以说,例如,宽度/高度可以是 >= 320,有时会有帮助。但请记住,在竖屏模式下才有效,在将UI转换为横屏时,图像不能同时保持正方形填充宽度并完全显示在屏幕上。
编辑:图像不应在竖屏模式下尝试伸展超出屏幕边界,只要您没有告诉它应该与底部“相距这么远”。
编辑-2:将背景视图的约束设置为父视图,全部4个。

我更新了我的问题并提供了更多细节。整个视图都没有调整,不仅仅是图片。 - Jhorra

1
我建议您以编程方式设置框架,而不使用约束。要做到这一点,请按照以下步骤操作:
  1. 将ImageView链接到其视图控制器中的出口
  2. 设置框架,使两个值相等

    frame.size.width/frame.size.height


我认为这应该可以工作。我已经更新了我的问题并提供了更多细节。整个视图都没有调整,不仅仅是图片。 - Jhorra

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接