iOS - UIViewContentMode

最近,因业务需求需要根据不同的情况,设置不同的图片显示模式。于是,又Google了一把,虽然已经用过很多次了。所以,这里记录一下,加深一下自己的印象。

先看一下,官方 UIViewContentMode 的枚举类型:

typedef NS_ENUM(NSInteger, UIViewContentMode) {
    UIViewContentModeScaleToFill,
    UIViewContentModeScaleAspectFit,      // contents scaled to fit with fixed aspect. remainder is transparent
    UIViewContentModeScaleAspectFill,     // contents scaled to fill with fixed aspect. some portion of content may be clipped.
    UIViewContentModeRedraw,              // redraw on bounds change (calls -setNeedsDisplay)
    UIViewContentModeCenter,              // contents remain same size. positioned adjusted.
    UIViewContentModeTop,
    UIViewContentModeBottom,
    UIViewContentModeLeft,
    UIViewContentModeRight,
    UIViewContentModeTopLeft,
    UIViewContentModeTopRight,
    UIViewContentModeBottomLeft,
    UIViewContentModeBottomRight,
};

这里,记录一下几个自己经常用到的模式:

UIViewContentModeScaleToFill

在这种模式下,图片会按照 ImageView 的尺寸填充满;如果图片尺寸过大会被压缩,如果图片尺寸过小会被拉伸。图片很有可能会变形。

UIViewContentModeScaleAspectFit

这种模式,图片会等比例被拉伸或压缩。结果就是在一个方向上正好填充满时,另一个方向上可能会有空白。(图片比例和ImageView比例不相同)

UIViewContentModeScaleAspectFill

这种模式,图片会被等比例拉伸或压缩。结果就是在一个方向上刚好填充满时,另一个方向上可能已经超出了ImageView的大小,导致部分不会被显示出来。(图片比例和ImageView比例不相同)

UIViewContentModeCenter

这种模式,图片多大就是多大,会居中显示在ImageView中。

个人的一点小心得:

  • 如果图片大小小于ImageView大小且要求居中显示,则用 UIViewContentModeCenter 比较好;但如果图片大小大于ImageView大小,建议不要用 UIViewContentModeCenter , 效果不是很好。

  • 如果要求不要显示位于ImageView之外的图片部分(一般都是这样),则需要设置ImageViewclipsToBounds 属性。

imageView.clipsToBounds = YES;
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值