【问题标题】:filling the width of imageview without stretching the image填充imageview的宽度而不拉伸图像
【发布时间】:2018-08-14 19:10:13
【问题描述】:

我有一个图像视图,其中图像填充宽度和高度而不拉伸图像..宽度始终相同..但高度根据图像的高度而变化...

我尝试了scaleToFill 并得到了这个拉伸图像:

也试过scaleToAspectFit,得到了这个不会填满宽度的:

如何填充图像视图的宽度和改变高度使其不会被拉伸?

当我用清晰的背景尝试scaleToAspectFill 时,我会得到这个:

我想要的是填充宽度和改变图像视图的高度,这样它就不会被拉伸......像这样的东西:

【问题讨论】:

  • 你想让黑色背景覆盖整个imageView吗?或者如果图像不完全可见但覆盖整个 imageView 是否可以?
  • @RakeshaShastri 不,我希望整个图像可见
  • 那么你将不得不减少你的 imageView 大小并添加 backgroundViews 或将 imageView 放在所需颜色的 backgroundView 上。
  • @RakeshaShastri 抱歉,这对我来说是全新的......背景视图是什么?
  • @RakeshaShastri 你能告诉我一个例子吗

标签: ios swift


【解决方案1】:

你想使用scaleToAspectFill

更多细节:

缩放内容以填充视图大小的选项。部分内容可能会被剪裁以填充视图的边界。

来自https://developer.apple.com/documentation/uikit/uiview/contentmode

在 OP 的评论之后:您可能希望将 backgroundColorUIImageView 设置为 clear。然后您的图像(带有scaleToAspectFit)将在没有额外框架的情况下可见。

【讨论】:

  • 恐怕 OP 不想要这个。
  • 是的,他在我回复后添加了评论。我添加了第二个选项来解决这个问题。
  • 尝试了第二个选项,还是一样..有些图像会被剪切
  • 不,第二个方法不允许剪切图像(如果您不在代码中做一些奇怪/非常规的事情)。它要求图像以在框架内的方式进行缩放。也许我不明白你想达到什么目的......
  • @AshleyMills 我想是的。我也认为我的回答仍然可以帮助找到这个问题的人——所以我愿意离开它。我也许可以更新我的答案,但不是现在。
【解决方案2】:

好的,所以根据您问题的更新,您需要使用

imageView.contentMode = scaleToAspectFill

并调整 imageView 的高度

您可以通过获取图像的大小并计算高宽比来做到这一点。然后你可以调整你的 imageView 的约束…

if let imageSize = imageView.image?.size {
    let ratio = imageSize.height / imageSize.width

    imageView.heightAnchor.constraint(equalTo: imageView.widthAnchor, multiplier: ratio).isActive = true
}

【讨论】:

  • 这工作正常..但它会弄乱设计..我的意思是下面的按钮不会被移动,它会保持在同一个地方,它会在图像视图上..跨度>
  • 你一定是在开玩笑。你问了一个问题,@franiis 给了你一个正确的答案。你更新了你的问题,所以他们给了你另一个正确答案。您再次更新了您的问题 - 我回答了。现在您正在添加一个按钮。如果您不向他们提供所有信息,他们应该如何回答您的问题?
  • 如果你可以检查我上传的最后一张图片..你可以看到一些按钮和标签,它们在 imageview 上变成了
  • 不不......我没有添加按钮......按钮从一开始就在那里,但它在图像视图下
  • 怎么会有人知道在图像视图下的按钮?这是如何让人们在未来忽略你的问题的一个典型例子——如果你不断改变目标,那么回答的意义何在?
【解决方案3】:

使用 scaleToFill contentMode 和 clipToBounds = true 它会解决你的问题。

【讨论】:

  • 对不起我的错误。我的意思是 scaleToAspectFit 和 clipToBounds。当您执行 scaleToAspectFit 时,它会在 imageView 中适合图像,然后 clipToBounds 将使图像适合 ImageView。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-05-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多