* ViewController には、保持するイメージのコピーが必要です。PresentViewController が閉じられた後に消えます – *
xibをUIViewController
使用してpresentViewController(modalViewController)を呼び出す元があります。xib の内部にはUIImageView
、マーカーでマークアップ (描画) できる があります。私の問題は、presentViewController を閉じると、設定した変数 (a UIImage
) が に戻りnil
、マークアップ イメージをUIImageView
mainの a に設定できないことUIViewController
です。
描画コード:
UITouch *touch = [touches anyObject];
currentPoint = [touch locationInView:drawImage];
UIGraphicsBeginImageContext(drawImage.frame.size);
[drawImage.image drawInRect:CGRectMake(0, 0,
drawImage.frame.size.width,
drawImage.frame.size.height)];
CGContextSetLineCap(UIGraphicsGetCurrentContext(), kCGLineCapRound);
CGContextSetLineWidth(UIGraphicsGetCurrentContext(), 5.0);
CGContextSetRGBStrokeColor(UIGraphicsGetCurrentContext(), red, green, blue, 1.0);
CGContextBeginPath(UIGraphicsGetCurrentContext());
CGContextMoveToPoint(UIGraphicsGetCurrentContext(), lastPoint.x, lastPoint.y);
CGContextAddLineToPoint(UIGraphicsGetCurrentContext(), currentPoint.x, currentPoint.y);
CGContextStrokePath(UIGraphicsGetCurrentContext());
drawImage.image = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
//Savve the drawings on image to a UIImage
savedMarkup = drawImage.image;
lastPoint = currentPoint;
メイン UIVC に描画されたイメージを設定するコードの2 つのメソッドAとBを試しました。
上記の行を削除すると方法 A は機能しますUIGraphicsEndImageContext
が、この行を削除すると、多くのメモリ警告が表示され、予想どおり、いくつかの描画後にクラッシュします。
方法 A: UIGraphicsBeginImageContextWithOptions(AView.drawImage.bounds.size, NO, 0.0);
[AView.drawImage.image drawInRect:CGRectMake(0, 0,
AView.drawImage.frame.size.width,
AView.drawImage.frame.size.height)];
UIImage *savedMarkup = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
AView.annotatedImage.image = savedMarkup;
[annotation dismissViewControllerAnimated:YES completion:nil];
方法 B:
AView.annotatedImage.image = AView.savedMarkup;
方法 B ではNSLog
、値がAView.savedMarkup
- の場合、"(null)" がログに記録されます。
私はこれを理解するためにガタガタしてきました!あなたの助けは非常に高く評価されています!