以下是我用来调整UIImage大小的代码,但遗憾的是它无效:
UIImage *cellImage = [UIImage imageNamed:@"warning.png"];
CGRect cropRect = CGRectMake(0.0, 0.0, 12.0, 12.0);
CGImageRef croppedImage = CGImageCreateWithImageInRect([cellImage CGImage], cropRect);
UIImageView *myImageView = [[UIImageView alloc] initWithFrame:cropRect];
[myImageView setImage:[UIImage imageWithCGImage:croppedImage]];
CGImageRelease(croppedImage);
为什么这段代码不起作用?
由于
答案 0 :(得分:1)
嗨试试这个: -
UIGraphicsBeginImageContext(CGSizeMake(50,50));
[[UIImage imageNamed:@"warning.png"] drawInRect: CGRectMake(0, 0,50,50)];
UIImage *newImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
答案 1 :(得分:0)
我不知道为什么不起作用,但尝试使用UIGraphicsBeginImageContext和UIGraphicsEndImageContext,UIGraphicsBeginImageContext需要一个大小。
答案 2 :(得分:0)
您是否忘记将myImageView
添加为主视图或其他可见视图的子视图? E.g。
[cell.contentView addSubview:myImageView];
这可以解释为什么没有出现。
但是,如果你的rect小于图像,CGImageCreateWithImageInRect()
会在矩形内裁剪图像。要调整UIImage本身的大小,请参阅:The simplest way to resize an UIImage?
但是,如果您实际上不需要调整UIImage本身的大小,那么最简单的方法就是让UIImageView处理调整大小。
UIImage *cellImage = [UIImage imageNamed:@"warning.png"];
CGRect cropRect = CGRectMake(0.0, 0.0, 12.0, 12.0);
CGImageRef croppedImage = CGImageCreateWithImageInRect([cellImage CGImage], CGRectMake(0.0f,0.0f,cellImage.size.width,cellImage.size.height));
UIImageView *myImageView = [[UIImageView alloc] initWithFrame:cropRect];
[myImageView setImage:[UIImage imageWithCGImage:croppedImage]];
CGImageRelease(croppedImage);
[cell.contentView addSubview:myImageView];
请参阅: