需求: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 imageif (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;以上所述是小编给大家介绍的iOS UIImage根据屏宽调整size的实例代码,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对脚本之家网站的支持!