イメージをロードし、この方法でミラーを作成します。
originalImg = [UIImage imageNamed:@"ms06.png"];
mirrorImg = [UIImage imageWithCGImage:[originalImg CGImage] scale:1.0 orientation:UIImageOrientationUpMirrored];
次に、上記の UIImage オブジェクトを UIView のサブクラスに設定し、drawRect をオーバーライドします。
- (void)drawRect:(CGRect)rect
{
CGContextRef context = UIGraphicsGetCurrentContext();
CGContextSaveGState(context);
CGAffineTransform t0 = CGContextGetCTM(context);
CGContextConcatCTM(context, t0);
CGContextDrawImage(context, self.bounds, [image CGImage]);
CGContextRestoreGState(context);
}
どの画像を描いても、表示される画像は常に元の画像であり、UIView サブクラスに設定するとミラーリングされた画像は表示されませんでした。ミラーリングされたイメージが UIView に正しく設定されたことは確かです。なぜなら、元のイメージが 0 に等しいのに対し、向きのメンバー変数が 4 に等しいことがデバッグ情報に示されているためです。 、 ありがとう。
また、setImage: を使用して UIImageView に鏡像を表示しようとしましたが、正しく動作します。ところで、UIImageView の setImage を呼び出したときに drawRect のブレークポイントがヒットしないことがわかりましたが、UIImageView に画像をロードするときの描画動作 (画像の上に線を引くなど) を定義するにはどうすればよいでしょうか?