uiimageView 的图片拉伸问题的解决办法
2017-06-02 13:40
369 查看
设置 UIImageView 的contentMode属性,根据自己的需要选择下面
我们都知道在iOS中,每一个UIImageView都有他的frame大小,但是如果图片的大小和这个frame的大小不符合的时候会怎么样呢?在默认情况,图片会被压缩或者拉伸以填满整个区域。
通过查看UIView的属性可以知道,view的contentMode属性可以用来控制图片的显示情况。下面的设置可以让图片进行居中显示。
1
这个居中是包括了,横向和纵向都是居中。图片不会拉伸或者压缩,就是按照imageView的frame和图片的大小来居中显示的。
这里有两种情况:
1、图片比view的区域更大。这个时候会截取图片的中间部位显示在frame区域里面。
2、图片比view的区域更小。这个时候图片会完整的显示在frame的中间位置。
如果在默认情况,图片的多出来的部分还是会显示屏幕上。如果不希望超过frame的区域显示在屏幕上要设置。clipsToBounds属性。
1
最后一个问题,在iphone的retina屏幕上面,必须要设置,contentScaleFactor属性。这个属性的默认值是1。二对应的retina屏幕需要是2.可以通过下面的方式来设置:
1
但是用:
1
也有他的问题,就是在图片不规则的时候,而且图片的宽或者高比frame的宽高更小的时候,会出现空白的情况。
为了解决这种问题可以设置:
1
这样图片会拉伸或者压缩以适应frame的边界,而且是适应更小的边,这样可以达成的效果是,图片适应最小的边铺开显示,更大的边会超出frame,如果设置了clipsToBounds属性为YES,那么更大的边就会被截断。这样达成更好的居中显示效果,完整的代码如下:
view source
UIViewContentModeScaleToFill, UIViewContentModeScaleAspectFit, // 原比例,不变形, UIViewContentModeScaleAspectFill, // 等比例填充 UIViewContentModeRedraw, // redraw on bounds change (calls -setNeedsDisplay) UIViewContentModeCenter, // contents remain same size. positioned adjusted. UIViewContentModeTop, UIViewContentModeBottom, UIViewContentModeLeft, UIViewContentModeRight, UIViewContentModeTopLeft, UIViewContentModeTopRight, UIViewContentModeBottomLeft, UIViewContentModeBottomRight,
我们都知道在iOS中,每一个UIImageView都有他的frame大小,但是如果图片的大小和这个frame的大小不符合的时候会怎么样呢?在默认情况,图片会被压缩或者拉伸以填满整个区域。
通过查看UIView的属性可以知道,view的contentMode属性可以用来控制图片的显示情况。下面的设置可以让图片进行居中显示。
1
imageView.contentMode = UIViewContentModeCenter;
这个居中是包括了,横向和纵向都是居中。图片不会拉伸或者压缩,就是按照imageView的frame和图片的大小来居中显示的。
这里有两种情况:
1、图片比view的区域更大。这个时候会截取图片的中间部位显示在frame区域里面。
2、图片比view的区域更小。这个时候图片会完整的显示在frame的中间位置。
如果在默认情况,图片的多出来的部分还是会显示屏幕上。如果不希望超过frame的区域显示在屏幕上要设置。clipsToBounds属性。
1
imageView.clipsToBounds = YES;
最后一个问题,在iphone的retina屏幕上面,必须要设置,contentScaleFactor属性。这个属性的默认值是1。二对应的retina屏幕需要是2.可以通过下面的方式来设置:
1
[imageView setContentScaleFactor:[[UIScreen mainScreen] scale]];
但是用:
1
imageView.contentMode = UIViewContentModeCenter;
也有他的问题,就是在图片不规则的时候,而且图片的宽或者高比frame的宽高更小的时候,会出现空白的情况。
为了解决这种问题可以设置:
1
imageView.contentMode = UIViewContentModeScaleAspectFill;
这样图片会拉伸或者压缩以适应frame的边界,而且是适应更小的边,这样可以达成的效果是,图片适应最小的边铺开显示,更大的边会超出frame,如果设置了clipsToBounds属性为YES,那么更大的边就会被截断。这样达成更好的居中显示效果,完整的代码如下:
view source
1 UIImage *pic = [ UIImage imageNamed:@"IMG_0404.PNG"]; 2 UIImageView *imageView = [[UIImageView alloc] initWithFrame:CGRectMake(20, 20, 240, 100 )]; 3 [imageView setImage:pic]; 4 [imageView setContentScaleFactor:[[UIScreen mainScreen] scale]]; 5 imageView.contentMode = UIViewContentModeScaleAspectFill; 6 imageView.autoresizingMask = UIViewAutoresizingFlexibleHeight; 7 imageView.clipsToBounds = YES;
相关文章推荐
- uiimageView 的图片拉伸问题的解决办法
- Android自定义控件:imageview重写onMeasure方法实现图片按指定比例显示,拉伸永不变形,解决屏幕适配问题
- 正确的添加图片方法 - 解决UIImageView.image = UIImage(named: String)不显示图像的问题
- ImageView的几种对图片的缩放处理 解决imageview放大图片后失真问题解决办法
- android 解决按钮、imageView 背景图片拉伸变大的问题
- Android ListView,GridView,RecyclerView图片加载错位闪动问题解决办法
- ImageView 无法显示图片问题解决办法
- android webview图片文件上传兼容性问题——上传控件点击无效的解决办法
- 新建类在ClassView中不能显示问题解决办法
- VC中CRectTracker在CScrollView中的问题解决办法(转)
- UIImageView如何以九宫格方式拉伸一个图片
- IOS_UIImageView图片自动拉伸
- devexpress中gridcontrol中的cardview中 图片不显示的问题解决
- VC中CRectTracker在CScrollView中的问题解决办法
- 网页背景图片拉伸解决办法。。
- DotNet2005Webform应用CrystalReportWebForm组建在IIS环境不显示Toollbar图片问题及解决办法
- J2ME显示网络图片遇到的问题以及解决办法
- [转]在IE7关闭窗口,上传图片无法预览,window.status无效问题解决办法
- 从sql库里读取二进制图片的问题 (参数无效 未处理ArgumentException 错误的解决办法)
- Android中 在显示ImageView时图片上面和下面都出现一段空白区间的解决办法