UIViewContentModeCenter添加填充

时间:2015-08-13 05:39:06

标签: ios objective-c uiimageview autolayout

我想在UIImageView中显示各种尺寸图像的缩略图。如果图片太大而无法放入UIImageView,我只希望显示适合UIImageView的照片数量,原始图像的中心位于UIImageView的中心1}}。

我目前正在设置imageView.clipsToBounds = YES;imageView.contentMode = UIViewContentModeCenter;。这几乎是有效的,除了UIImageView层中有少量看似填充的内容。当我尝试添加角半径时,我可以看到角落没有完全圆角。

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

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

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

With <code>imageView.contentMode = UIViewContentModeCenter. See padding added to sides.</code>

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

Same constraints and UI setup as above, but with default setting for <code>imageView.contentMode</code>

2 个答案:

答案 0 :(得分:3)

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

默认的contentMode是UIViewContentModeScaleToFill,因此当您使用它时,图像会在每个方向展开以填充imageView。这就是为什么你没有看到任何填充。

如果要填充imageView并保持图像比例,则应使用imageView.contentMode = UIViewContentModeScaleAspectFill

希望有所帮助

答案 1 :(得分:0)

我看到有些人在左右两侧切断了你的UIImageView。 UIImageView的宽度(使用UIViewContentModeCenter)低于正常值。我对UIViewContentModeCenter的问题不确定。 但是有一些方法可以解决:

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

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

  3. 希望这有帮助。