图像尺寸太大时 Tableview 单元格抖动
Tableview cell shaking when image size is too large
我必须在 100*100 像素等固定尺寸区域显示图像,但实际图像尺寸太大(如 400*450),问题是当我在 100*100 像素图像视图中设置大图像然后滚动产生细胞摇动
我使用这一行代码创建了一个缩放的新 UIImage。设置比例和方向参数来实现你想要的。第一行代码只是抓取图像。
// grab the original image
UIImage *originalImage = [UIImage imageNamed:@"myImage.png"];
// scaling set to 2.0 makes the image 1/2 the size.
UIImage *scaledImage =
[UIImage imageWithCGImage:[originalImage CGImage]
scale:(originalImage.scale * 2.0)
orientation:(originalImage.imageOrientation)];
最简单的方法是设置 UIImageView 的框架并将 contentMode 设置为调整大小选项之一。
或者您可以使用这个实用方法,如果您确实需要调整图像的大小:
+ (UIImage *)imageWithImage:(UIImage *)image scaledToSize:(CGSize)newSize {
//UIGraphicsBeginImageContext(newSize);
// In next line, pass 0.0 to use the current device's pixel scaling factor (and thus account for Retina resolution).
// Pass 1.0 to force exact pixel size.
UIGraphicsBeginImageContextWithOptions(newSize, NO, 0.0);
[image drawInRect:CGRectMake(0, 0, newSize.width, newSize.height)];
UIImage *newImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
return newImage;
}
我必须在 100*100 像素等固定尺寸区域显示图像,但实际图像尺寸太大(如 400*450),问题是当我在 100*100 像素图像视图中设置大图像然后滚动产生细胞摇动
我使用这一行代码创建了一个缩放的新 UIImage。设置比例和方向参数来实现你想要的。第一行代码只是抓取图像。
// grab the original image
UIImage *originalImage = [UIImage imageNamed:@"myImage.png"];
// scaling set to 2.0 makes the image 1/2 the size.
UIImage *scaledImage =
[UIImage imageWithCGImage:[originalImage CGImage]
scale:(originalImage.scale * 2.0)
orientation:(originalImage.imageOrientation)];
最简单的方法是设置 UIImageView 的框架并将 contentMode 设置为调整大小选项之一。
或者您可以使用这个实用方法,如果您确实需要调整图像的大小:
+ (UIImage *)imageWithImage:(UIImage *)image scaledToSize:(CGSize)newSize {
//UIGraphicsBeginImageContext(newSize);
// In next line, pass 0.0 to use the current device's pixel scaling factor (and thus account for Retina resolution).
// Pass 1.0 to force exact pixel size.
UIGraphicsBeginImageContextWithOptions(newSize, NO, 0.0);
[image drawInRect:CGRectMake(0, 0, newSize.width, newSize.height)];
UIImage *newImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
return newImage;
}