Я новичок в Quartz2d, поэтому я надеюсь, что на этот вопрос легко ответить.
У меня есть прокрутка, фрейм контента которой составляет 1024x768. В этом я помещаю пользовательский вид (с рамкой 1024x768), который использует Quartz2d для рисования. Идея в том, что у меня есть большая область, которую пользователь может прокручивать, чтобы увидеть разные части.
Проблема, с которой я сталкиваюсь, заключается в том, что при прокрутке устройства появляются ошибки предупреждения о памяти или ужасная производительность прокрутки. Это, без сомнения, потому что я перерисовываю все поле 1024x768. Я думал, что установка обтравочного контура для смещения UIScrollView поможет ... и это помогает ... пока я не прокручиваю ... в этом случае представление не перерисовывается, пока прокрутка не остановится. указание рисовать представление во время scrollViewDidScroll также приводит к плохой производительности
Может кто-нибудь сказать мне, как я могу оптимизировать мою процедуру рисования?
у меня есть два изображения ... одно из которых маскируется, а оба рисуются на экране (одно поверх другого)
- (void)drawRect:(CGRect)dirtyRect {</p>
<pre><code>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);
}
Заранее благодарим за любую помощь, которую вы можете оказать!