UIImageView都是有自己的frame的,但是在ImageView中显示的图片却有大有小,我们直接用[imageView setImage:[UIImage ImageNamed:@"imageName"]]这个方法的时候,图片会拉伸或者压缩到ImageView的大小,这时候图片就显得畸形了。解决的方法很简单:
通过查看UIView的属性可以知道,view的contentMode属性可以用来控制图片的显示情况。下面的设置可以让图片进行居中显示。
imageView.contentMode = UIViewContentModeCenter;
这个居中是包括了,横向和纵向都是居中。图片不会拉伸或者压缩,就是按照imageView的frame和图片的大小来居中显示的。
但是问题来了:
1、图片比view的区域更大。这个时候会截取图片的中间部位显示在frame区域里面。
2、图片比view的区域更小。这个时候图片会完整的显示在frame的中间位置。
如果在默认情况,图片的多出来的部分还是会显示屏幕上。如果不希望超过frame的区域显示在屏幕上要设置。clipsToBounds属性。
imageView.clipsToBounds = YES;
但是,问题又来了:
在图片不规则的时候,而且图片的宽或者高比frame的宽高更小的时候,会出现空白的情况。
解决方法在这里:
imageView.contentMode = UIViewContentModeScaleAspectFill;
这样图片会拉伸或者压缩以适应frame的边界,而且是适应更小的边,这样可以达成的效果是,图片适应最小的边铺开显示,更大的边会超出frame,如果设置了clipsToBounds属性为YES,那么更大的边就会被截断。这样达成更好的居中显示效果,完整的代码如下:
网友评论