您好,欢迎来到二三娱乐。
搜索
您的当前位置:首页UIImageView的图片拉伸问题的解决办法(转)

UIImageView的图片拉伸问题的解决办法(转)

来源:二三娱乐
imageView.contentMode =  UIViewContentModeCenter;

这个居中是包括了,横向和纵向都是居中。图片不会拉伸或者压缩,就是按照imageView的frame和图片的大小来居中显示的。
这里有两种情况:
1、图片比view的区域更大。这个时候会截取图片的中间部位显示在frame区域里面。
2、图片比view的区域更小。这个时候图片会完整的显示在frame的中间位置。
如果在默认情况,图片的多出来的部分还是会显示屏幕上。如果不希望超过frame的区域显示在屏幕上要设置。clipsToBounds属性。

imageView.clipsToBounds  = YES;

最后一个问题,在iphone的retina屏幕上面,必须要设置,contentScaleFactor属性。这个属性的默认值是1。二对应的retina屏幕需要是2.可以通过下面的方式来设置:
1

[imageView setContentScaleFactor:[[UIScreen mainScreen] scale]];

但是用:

imageView.contentMode =  UIViewContentModeCenter;

也有他的问题,就是在图片不规则的时候,而且图片的宽或者高比frame的宽高更小的时候,会出现空白的情况。
为了解决这种问题可以设置:

imageView.contentMode =  UIViewContentModeScaleAspectFill;

这样图片会拉伸或者压缩以适应frame的边界,而且是适应更小的边,这样可以达成的效果是,图片适应最小的边铺开显示,更大的边会超出frame,如果设置了clipsToBounds属性为YES,那么更大的边就会被截断。这样达成更好的居中显示效果,完整的代码如下:

UIImage *pic = [ UIImage imageNamed:@"IMG_0404.PNG"];

UIImageView *imageView   = [[UIImageView alloc] initWithFrame:CGRectMake(20, 20, 240, 100 )];

[imageView setImage:pic];

[imageView setContentScaleFactor:[[UIScreen mainScreen] scale]];

imageView.contentMode =  UIViewContentModeScaleAspectFill;

imageView.autoresizingMask = UIViewAutoresizingFlexibleHeight;

imageView.clipsToBounds  = YES;

Copyright © 2019- yule263.com 版权所有 湘ICP备2023023988号-1

违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务