カスタムで使用している画像がありますUITableViewCell
。画像は透明な背景に黒い三角形で、CIColorInvert
フィルターを使用して透明な背景に白い三角形にしています。
フィルタリングされた (反転された) 画像が縦に引き伸ばされています。これを防ぐにはどうすればよいですか?
UIImage
フィルタリングを行わずに直接ロードすると、次のようになります。
CIFilter
私が得るものを適用すると、これは次のとおりです。
これが私のコードです:
// create the white triangle
CIImage *inputImage = [[CIImage alloc] initWithImage:
[UIImage imageNamed:@"TriangleRight"]];
CIFilter *invertFilter = [CIFilter filterWithName:@"CIColorInvert"];
[invertFilter setDefaults];
[invertFilter setValue: inputImage forKey: @"inputImage"];
CIImage *outputImage = [invertFilter valueForKey: @"outputImage"];
CIContext *context = [CIContext contextWithOptions:nil];
rightArrow = [UIImage imageWithCGImage:[context createCGImage:outputImage fromRect:outputImage.extent]];
どちらの場合も、UIImageView
次のように画像を設定しています。
cell.arrow.image = rightArrow;
UIImageView
寸法は 15x15 (IB) です。TriangleRight.png は 15x15 ピクセル、TriangleRight@2x.png は 30x30 ピクセルです。
CIFilter
が画像を引き伸ばすのを防ぐために何が欠けていますか?
更新:
質問を投稿してから 5 分後、私は問題を理解しました: 自動レイアウトを使用してUIImageView
いて、明示的な高さの制約 (幅のみ) がありませんでした。明示的な高さの制約を追加すると、問題が解決しました。UIImage
ただし、直接使用する理由はまだ説明されていません(明示的な高さの制約がなくても)。