ユーザーがUIImageViewに描画できるようにAPPを作成しています
彼はまた、ズームイン/ズームアウトするためにそれをつまむことができます。
UNDO機能を実装しました。
したがって、ユーザーがストロークを描いたり画像をつまんだりするたびに、UIImageとフレームを保存します。
ImageWithFrame *imageWithFrame = [[ImageWithFrame alloc]
initWithImageAndFrame:imageViewSubject.image andFrame:imageViewSubject.frame];
[self.tabImageForUndo addObject:imageWithFrame];
UIImageView全体を配列に保存しようとしましたが、機能しません。そのため、UIImageとフレームを保存します。
そして、ユーザーがUNDOボタンをクリックした後、配列から最後のimageWithFrameを取得しました
ImageWithFrame *imageWithFrame = [self.tabImageForUndo lastObject];
そして私はこれをします:
ImageWithFrame *imageWithFrame = [self.tabImageForUndo lastObject];
self.imageViewSubject.frame = CGRectIntegral(imageWithFrame.frame);
self.imageViewSubject.image = imageWithFrame.image;
self.imageViewSubject.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight;
[self.tabImageForUndo removeLastObject];
そして、念のためにグラフィックコンテキストをクリアします:
UIGraphicsBeginImageContext(self.view.bounds.size);
CGContextRef context = UIGraphicsGetCurrentContext();
CGContextClearRect(context, self.view.bounds);
// clean up context
UIGraphicsEndImageContext();
======================================
UIImageViewが表示され、ストロークを実行し、元に戻すと、機能します。
ピンチした後、UIImageViewのサイズが変更され(ズームアウトまたはズームイン)、元に戻すので、UIImageViewは古いフレームに戻ります。
しかし
別のストロークを描くと、画像がぼやけ、UIImageViewがどんどん小さくなります。
このビデオを見てくださいhttp://tinypic.com/player.php?v=ivbkn5&s=5
同じ効果が得られました(ただし、UIImage全体では、UIImageがストロークで再描画されているため、正常です)
この投稿から別のユーザーによってアップロードされました:画像のズームと描画時にCGContextStrokePathが機能しません
しかし、私はその問題の原因が私のものに関連しているとは思わない。
ピンチを行わないと完全に機能するので、ピンチジェスチャの後に古いフレームを設定すると問題が発生することに注意してください。
私は十分に明確であることを願っています。
よろしくお願いします:)