1 scale the image
a nice category:
header
#import <UIKit/UIKit.h>
@interface UIImage (Scale)
- (UIImage*)imageScaledToSize:(CGSize)size alpha:(CGFloat)alpha;
- (UIImage*)imageScaledToSize:(CGSize)size;
- (UIImage*)imageScaledToFit:(CGSize)size;
- (UIImage*)imageScaledToFill:(CGSize)size;
@end
implementation
@implementation UIImage (Scale)
- (UIImage*)imageScaledToSize:(CGSize)size alpha:(CGFloat)alpha {
// Create a bitmap graphics context
// This will also set it as the current context
UIGraphicsBeginImageContextWithOptions(size, NO, 0.0); //respect to Retina display
// Draw the scaled image in the current context
[self drawInRect:CGRectMake(0, 0, (int)size.width, (int)size.height)
blendMode:kCGBlendModeMultiply
alpha:alpha];
// Create a new image from current context
UIImage* scaledImage = UIGraphicsGetImageFromCurrentImageContext();
// Pop the current context from the stack
UIGraphicsEndImageContext();
// Return our new scaled image
return scaledImage;
}
- (UIImage*)imageScaledToSize:(CGSize)size {
return [self imageScaledToSize:size alpha:1];
}
- (UIImage*)imageScaledToFit:(CGSize)size {
CGFloat scale = size.width / self.size.width;
scale = MIN(scale, size.height / self.size.height);
return [self imageScaledToSize:CGSizeMake(self.size.width * scale, self.size.height * scale)];
}
//TODO: crop frame
- (UIImage*)imageScaledToFill:(CGSize)size {
CGFloat scale = size.width / self.size.width;
scale = MAX(scale, size.height / self.size.height);
return [self imageScaledToSize:CGSizeMake(self.size.width * scale, self.size.height * scale)];
}
@end
usage
UIImage *img = [imagesarray objectAtIndex:indexPath.row];
cell.imageView.image =[img imageScaledToFit:CGSizeMake(80, 80)];
2 set size of tableView cell imageView
[cell.imageView setFrame:CGRectMake(newX, newY, newWidth, newHeight)];
//E.G. [cell.imageView setFrame:CGRectMake(0, 0, 80, 80)];