类似的事情并不能真正回答我的问题
我在做什么
用户点击“保存”按钮。这将创建一个新的表格视图单元格。图像在另一个线程中下载。
- 我从 URL 下载图像
- 保存图像
- 在保持纵横比的同时缩放图像
- 将图片设置为之前创建的 UITableViewCell imageView
问题
问题是最后一步。我希望图像填充视图并被剪裁。但是,始终绘制图像以使其完全适合 imageView 内部并带有一些空白区域。图像甚至不会在单个维度中填充单元格的 imageView。它与顶部、底部和左侧的空白右对齐。
当我在设置错误绘制的图像后点击单元格时,单元格会重绘并绘制图像以在一维中填充 imageView,但仍然没有被剪裁。
代码
我创建了单元格并设置了一个临时图像
cell.imageView.image = [UIImage imageNamed:@"125-food.png"];
cell.imageView.contentMode = UIViewContentModeScaleAspectFit;
cell.imageView.layer.masksToBounds=YES;
我这样开始工作:
dispatch_after(dispatch_time(DISPATCH_TIME_NOW, 500000 * NSEC_PER_USEC), dispatch_get_current_queue(), ^{ /*Stuff*/ });
缩放图像代码
CGFloat newHeight;
CGFloat newWidth;
if(image.size.width>image.size.height)
{
newHeight = 44.0;
newWidth = image.size.width * newHeight / image.size.height;
}
else
{
newWidth = 44.0;
newHeight = image.size.height * newWidth / image.size.width;
}
CGRect newRect = CGRectMake(0,0,newWidth,newHeight);
UIGraphicsBeginImageContext(newRect.size);
[image drawInRect:newRect];
UIImage * newImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
return newImage;
然后我在单元格中设置 newImage
cell.imageView.image = newImage;
屏幕截图
新单元格不会填充 44x44 图像视图,并且旧单元格不会被剪裁。