Iphone Quartz2D和剪裁-优化此绘图例程?

Iphone Quartz2D和剪裁-优化此绘图例程?,iphone,Iphone,我刚接触Quartz2d,所以我希望这是一个容易回答的问题 我有一个滚动视图,它的内容框架是1024x768。在这里,我推送一个自定义视图(带有1024x768帧),该视图使用Quartz2d绘制一些图形。我的想法是,我有一个大的区域,用户可以滚动查看不同的部分 我遇到的问题是,当我在设备上滚动时,会出现内存警告错误或糟糕的滚动性能。这是毫无疑问的,因为我正在重新绘制整个1024x768字段。我认为将剪切路径设置为UIScrollView偏移会有所帮助。。确实如此。。直到我滚动。。在这种情况下,

我刚接触Quartz2d,所以我希望这是一个容易回答的问题

我有一个滚动视图,它的内容框架是1024x768。在这里,我推送一个自定义视图(带有1024x768帧),该视图使用Quartz2d绘制一些图形。我的想法是,我有一个大的区域,用户可以滚动查看不同的部分

我遇到的问题是,当我在设备上滚动时,会出现内存警告错误或糟糕的滚动性能。这是毫无疑问的,因为我正在重新绘制整个1024x768字段。我认为将剪切路径设置为UIScrollView偏移会有所帮助。。确实如此。。直到我滚动。。在这种情况下,直到滚动停止,视图才会重新绘制。告诉视图在scrollViewDidScroll期间绘制也会导致性能不佳

谁能告诉我如何优化我的绘图程序

我有两张照片。。其中一个被蒙住,两个都被涂到屏幕上(一个在另一个上面)


-(void)drawRect:(CGRect)dirtyRect{

CGContextRef myContext = UIGraphicsGetCurrentContext();


// get our offset (where we've scrolled to)
CGPoint offset = scrollView.contentOffset;

    // clip to our offset.. uncomment for good performance but terrible scrolling
//CGContextClipToRect(myContext, CGRectMake(offset.x, offset.y, 480, 320));


// make an image from the mask context
CGImageRef aMaskImage = CGBitmapContextCreateImage (myMaskContext);

// mask the first image
CGImageRef aImage = CGImageCreateWithMask(myImageRef1, aMaskImage);

CGContextDrawImage(myContext, CGRectMake(0, 0, self.frame.size.width, self.frame.size.height), myImageRef1);
CGContextDrawImage(myContext, CGRectMake(0, 0, self.frame.size.width, self.frame.size.height), aImage);


CGImageRelease(aImage);
CGImageRelease(aMaskImage);
}


提前感谢您提供的任何帮助

一般来说,要优化滚动大对象,您可以查看CATiledLayer。

一般来说,要优化滚动大对象,您可以查看CATiledLayer。

我假设您在某个地方调用
setNeedsDisplay
。您需要调用
setNeedsDisplayInRect
。确保只传递更改的rect。

我假设您在某个地方调用
setNeedsDisplay
。您需要调用
setNeedsDisplayInRect
。确保只通过更改的rect。

谢谢。我没有时间再看这个了,但我认为这是唯一合理的答案我想另一个答案是观察dirtyRect参数,但我认为CATiledLayer更有可能提供帮助。谢谢。我没有时间再看这个了,但我认为这是唯一合理的答案我想另一个答案是观察dirtyRect参数,但我认为CATiledLayer更有可能提供帮助。