类似的事情并没有真正回答我的问题
我在做什么
用户点按“保存”按钮。这将创建一个新的表视图单元格。图像在另一个帖子中下载。
问题
问题是最后一步。 我希望图像填充视图并进行剪裁。然而,图像总是被绘制,使得它完全适合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图像视图,旧单元格不会被剪裁。
答案 0 :(得分:0)
我似乎解决了我的问题。首先,我缩放图像的方式不正确。我在这里找到了更好的方法UIImage: Resize, then Crop
我使用了Anybody提出的方法。因此,通过计算比例因子,我可以使用正确的缩放创建正确大小的图像。这使我不必在视图中剪辑图像。
CGFloat scaleFactor = 1.0;
//Deciding which factor to use to scale the image (factor = targetSize / imageSize)
if (image.size.width > targetSize.width || image.size.height > targetSize.height)
if (!((scaleFactor = (targetSize.width / image.size.width)) > (targetSize.height / image.size.height))) //scale to fit width, or
scaleFactor = targetSize.height / image.size.height; // scale to fit heigth.
UIGraphicsBeginImageContext(targetSize);
//Creating the rect where the scaled image is drawn in
CGRect rect = CGRectMake((targetSize.width - image.size.width * scaleFactor) / 2,
(targetSize.height - image.size.height * scaleFactor) / 2,
image.size.width * scaleFactor, image.size.height * scaleFactor);
//Draw the image into the rect
[image drawInRect:rect];
现在我只需要设置图像。 Set UIImageView Size in UITableViewCell when UIImage loaded from URL?建议我应该能够设置图像。但这给了我一个像我的屏幕截图一样的结果。显然,我也无法控制表格单元格视图。
<击> 在Resize UIImageView in UITableViewCell中,有一个建议在imageView上设置变换。我认为既然缩略图已经按照尺寸制作了,我应该缩小到1.0。
cell.imageView.transform = CGAffineTransformMakeScale(1.0, 1.0);
到目前为止这似乎运作良好!
击>
我的临时图标似乎正常工作,并且正确显示已保存的缩略图。不同之处在于临时图像的大小不同。所以我将我的图标放大到正确的大小。我的图片现在显示正确!