Я создал приложение для рисования, чтобы рисовать, когда вы касаетесь экрана, и он работает очень плавно в симуляторе, но когда я тестировал его на своем iPad 2, он замедляется, и мне очень долго нужно рисовать. Я использую эти строки кода:Производительность приложения для рисования
- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {
UITouch *touch = [[event allTouches] anyObject];
lastPoint = [touch locationInView:self.view];
}
- (void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event {
mouseSwiped = YES;
UITouch *touch = [touches anyObject];
currentPoint = [touch locationInView:self.view];
UIGraphicsBeginImageContext(self.view.frame.size);
[drawImage.image drawInRect:self.view.frame];
CGContextSetLineCap(UIGraphicsGetCurrentContext(), kCGLineCapRound);
CGContextSetLineWidth(UIGraphicsGetCurrentContext(), 7.0);
CGContextSetRGBStrokeColor(UIGraphicsGetCurrentContext(), 0, 1, 0, 1);
CGContextBeginPath(UIGraphicsGetCurrentContext());
CGContextMoveToPoint(UIGraphicsGetCurrentContext(), lastPoint.x, lastPoint.y);
CGContextAddLineToPoint(UIGraphicsGetCurrentContext(), currentPoint.x, currentPoint.y);
CGContextStrokePath(UIGraphicsGetCurrentContext());
[drawImage setFrame:self.view.frame];
drawImage.image = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
lastPoint = currentPoint;
[self.view addSubview:drawImage];
}
Я думаю, что проблема с вызовом drawInRect: метод в touchMoved: метод
Попробуйте проанализировать это с помощью инструмента Time Profiler - он расскажет вам, какие вызовы методов используют большинство времени процесса. Просмотрите видеоролик WWDC «Основная анимация»: https://developer.apple.com/videos/wwdc/2011/index.php – elimirks
Кажется, это отличное приложение для использования displayLink. Вызывайте setNeedsDisplay только столько раз в секунду, сколько бы событий касалось. – Putz1103
Да, я знаю, что ошибка в drawInRect: вызов, потому что когда я удаляю, он работает плавно, но рисунок не идеален в этом случае – user3330895