UIViewContentModeCenter 添加填充

UIViewContentModeCenter Adds Padding

我想在 UIImageView 中显示各种尺寸图像的缩略图。如果图片太大放不下UIImageView,我想只显示放满UIImageView的照片数量,原图的中心在[=]的中心10=]。

我目前通过设置 imageView.clipsToBounds = YES;imageView.contentMode = UIViewContentModeCenter; 来执行此操作。这几乎可以正常工作,除了在 UIImageView 的层内似乎有少量填充。当我尝试添加圆角半径时,我发现圆角没有完全圆化。

当我将 imageView.contentMode 保留为默认值时,图像两侧没有填充,但图像的缩放比例很奇怪,而不是我想要的。

为什么我在使用 UIViewContentModeCenter 时遇到这个问题,有没有办法解决它?如果没有,我如何即时裁剪图像,这样我就不必使用 UIViewContentModeCenter,而只显示适合 UIImageView 的图像中心部分?

下面是 imageView.contentMode = UIViewContentModeCenter 视图的外观。查看左侧和右侧如何有额外的填充,尽管当我记录 imageView 的宽度和 x 原点时,它们看起来与上面的标签相同。

下面是与上面完全相同的代码,但使用 imageView.contentMode 的默认设置。查看没有添加填充,但图像变形。

我看到一些东西在你的 UIImageView 的左边和右边切了你。 UIImageView(带有 UIViewContentModeCenter)的宽度小于正常值。我不确定 UIViewContentModeCenter 你的问题。 但有一些解决方法:

  1. 将 UIImageView 添加到 UIView,使用 imageView.contentMode = UIViewContentModeCenter; 和 cornerRadius UIView。

  2. 为 UIImageView 使用掩码:How to Mask an UIImageView

希望对您有所帮助。

UIViewContentModeCenter 保持 imageView 的比例,因此,当您显示它时,可以显示填充,因为图像的高度大于宽度,反之亦然。

默认的contentMode是UIViewContentModeScaleToFill,所以当你使用它的时候,图片会向各个方向展开来填充imageView。这就是您看不到任何填充的原因。

如果你想填充 imageView 并保持图像比例,那么你应该使用 imageView.contentMode = UIViewContentModeScaleAspectFill

希望对您有所帮助