0

我正在编写一个应用程序,以便用户可以在 UIImageView 上绘图

他还可以捏它来放大/缩小。

我已经实现了 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 not working when zooming and drawing images

但我不认为其问题的根源与我的有关。

请注意,如果我不进行捏合,它可以完美地工作,所以我认为问题是当我在捏合手势后设置旧框架时。

我希望我足够清楚。

提前非常感谢:)

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 回答