私の問題に実際には答えない同様のもの
私がしていること
ユーザーが「保存」ボタンをタップします。これにより、新しいテーブル ビュー セルが作成されます。画像は別のスレッドでダウンロードされます。
- URLから画像をダウンロードする
- 画像を保存する
- アスペクト比を維持したまま画像を拡大縮小する
- 先ほど作成した UITableViewCell imageView に画像を設定します
問題
問題は最後のステップです。画像がビューを埋めて切り取られるようにします。ただし、画像は常に imageView 内に完全に収まるように描画され、空の空白があります。画像は、セルの imageView を 1 つの次元で埋めることさえありません。上下左右の空白で右揃えです。
誤って描画された画像が設定された後にセルをタップすると、セルが再描画され、画像が描画されて imageView が 1 次元で塗りつぶされますが、まだクリップされません。
コード
セルを作成し、一時的な画像を設定します
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 の画像ビューを埋めず、古いセルは切り取られません。