一聚教程网:一个值得你收藏的教程网站

最新下载

iOS中 UIImage根据屏宽调整size的实例代码

时间:2017-02-04 00:00:00 编辑:简简单单 来源:转载

iOS中 UIImage根据屏宽调整size的实例代码iOS中 UIImage根据屏宽调整size的实例代码

需求:UIImage根据屏幕宽度按照自己本身比例改变高度

上代码,为UIImage创建一个Category

 

 代码如下

#import"UIImage+UIImageExtras.h"

@implementationUIImage (UIImageExtras)

- (UIImage *)imageByScalingToSize:(CGSize)targetSize

{

 UIImage *sourceImage = self;

 UIImage *newImage = nil;

 CGSize imageSize = sourceImage.size;

 CGFloat width = imageSize.width;

 CGFloat height = imageSize.height;

 CGFloat targetWidth = targetSize.width;

 CGFloat targetHeight = targetSize.height;

 CGFloat scaleFactor =0.0;

 CGFloat scaledWidth = targetWidth;

 CGFloat scaledHeight = targetHeight;

 CGPoint thumbnailPoint = CGPointMake(0.0,0.0);

 if(CGSizeEqualToSize(imageSize, targetSize) ==NO) {

 CGFloat widthFactor = targetWidth / width;

 CGFloat heightFactor = targetHeight / height;

 if(widthFactor < heightFactor)

  scaleFactor = widthFactor;

 else

  scaleFactor = heightFactor;

 scaledWidth = width * scaleFactor;

 scaledHeight = height * scaleFactor;

 // center the image

 if(widthFactor < heightFactor) {

   

  thumbnailPoint.y = (targetHeight - scaledHeight) *0.5;

 }elseif(widthFactor > heightFactor) {

  thumbnailPoint.x = (targetWidth - scaledWidth) *0.5;

 }

 }

 // this is actually the interesting part:

 UIGraphicsBeginImageContext(targetSize);

 CGRect thumbnailRect = CGRectZero;

 thumbnailRect.origin = thumbnailPoint;

 thumbnailRect.size.width = scaledWidth;

 thumbnailRect.size.height = scaledHeight;

 [sourceImage drawInRect:thumbnailRect];

 newImage =UIGraphicsGetImageFromCurrentImageContext();

 UIGraphicsEndImageContext();

 if(newImage == nil)

 NSLog(@"could not scale image");

 returnnewImage ;

}

@end

 

在需要使用的地方import然后使用

 

 代码如下

CGSize size = image.size;

image = [image imageByScalingToSize:CGSizeMake([UIScreen mainScreen].bounds.size.width,[UIScreen mainScreen].bounds.size.width * (size.height / size.width))];

self.imageview.image = image;

 

文章评论

热门栏目