0

ユーザーが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が機能しません

しかし、私はその問題の原因が私のものに関連しているとは思わない。

ピンチを行わないと完全に機能するので、ピンチジェスチャの後に古いフレームを設定すると問題が発生することに注意してください。

私は十分に明確であることを願っています。

よろしくお願いします:)

4

1 に答える 1

0

やっと使って解決しました

UIGraphicsBeginImageContextWithOptions(self.imageViewSubject.bounds.size, self.imageViewSubject.opaque, 0.0);

それ以外の

UIGraphicsBeginImageContext(self.imageViewSubject.bounds.size);
于 2013-01-27T14:19:00.723 に答える