UIViewContentMode小记

UIViewContentMode小记

开发中经常会出现服务器下载图片的尺寸比例与UI上不一致的问题,这时我们需要设置图片的contentMode来进行适配。

属性如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
typedef NS_ENUM(NSInteger, UIViewContentMode) {
//图片拉伸填充至整个UIImageView(图片可能会变形),这也是默认的属性,如果什么都不设置就是它在起作用
UIViewContentModeScaleToFill,
//图片拉伸至完全显示在UIImageView里面为止(图片不会变形)
UIViewContentModeScaleAspectFit,
//图片拉伸至图片的的宽度或者高度等于UIImageView的宽度或者高度为止.看图片的宽高哪一边最接近UIImageView的宽高,一个属性相等后另一个就停止拉伸.
UIViewContentModeScaleAspectFill,
//调用setNeedsDisplay 方法时,就会重新渲染图片
//下面的属性都是不会拉伸图片的
UIViewContentModeRedraw,
//中间模式
UIViewContentModeCenter,
//顶部
UIViewContentModeTop,
//底部
UIViewContentModeBottom,
//左边
UIViewContentModeLeft,
//右边
UIViewContentModeRight,
//左上
UIViewContentModeTopLeft,
//右上
UIViewContentModeTopRight,
//左下
UIViewContentModeBottomLeft,
//右下
UIViewContentModeBottomRight,
};

测试原图如下:


默认(UIViewContentModeScaleToFill)

UIViewContentModeScaleAspectFit

UIViewContentModeScaleToFill

UIViewContentModeScaleAspectFill

UIViewContentModeCenter

如果想让图片占满整个父容器,并且不变形,可以采用一种折中的方式

1
2
image1.contentMode = UIViewContentModeScaleAspectFill;
image1.clipsToBounds = YES;