*我需要我的 ViewController 有一个图像的副本来保存,在我的 PresentViewController 被解雇后它正在消失 - *
我有一个UIViewController
使用xib 调用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;
我尝试了 2 种代码方法A和B来设置绘制到主 UIVC 上的图像。
如果我从上面删除该行,则方法 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)”。
我一直在喋喋不休地想出这个!非常感谢您的帮助!