iOS UIImage根据屏宽调整size

来源:互联网 发布:js修改div display 编辑:程序博客网 时间:2024/05/29 03:29

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


上代码,为UIImage创建一个Category

#import "UIImage+UIImageExtras.h"@implementation UIImage (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;        } else if (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");    return newImage ;}@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;



0 0