Есть ли способ уйти от drawRect:
без обновления тока UIView
? Например:Rollback drawRect:
- (void)drawRect:(CGRect)rect {
CGContextRef context = UIGraphicsGetCurrentContext();
CGContextSetRGBStrokeColor(context, 1.0, 1.0, 1.0, 1.0);
CGContextSetLineWidth(context, 2);
CGContextMoveToPoint(context, 10.0, 30.0);
CGContextAddLineToPoint(context, 310.0, 30.0);
CGContextStrokePath(context);
//I would like to return from here and rollback all changes in drawRect:
}
Спасибо!
Нет, вы не можете. Если вы объясните, почему вы хотите это сделать, возможно, кто-то может предложить альтернативное решение. –
Это приложение карты. Когда пользователь перемещает карту, новый поток (назовем этот поток1) начинает перерисовывать экран. Затем пользователь снова перемещает карту, и теперь thread2 (самый новый поток) должен перерисовать карту. Но если thread1 не закончил чертеж, экран будет «плоть» изображения потока1 на мгновение. Поэтому лучше откат метода drawRect: thread1 и рисовать только изображение thread2. – fic
Звучит странно. Вы не можете перерисовать экран более чем на 50 кадров в секунду. Время, затрачиваемое на вытяжку, должно быть менее 1/50 секунд для того, чтобы gui мог реагировать. Если ваш рисунок занимает больше времени, это звучит так, как будто вам нужно рисовать текстуру в фоновом потоке, а когда она готова, выкладывайте ее на экран в drawrect (что займет гораздо меньше 1/50 секунд). Затем ваш вопрос заключается в том, как отменить фоновый поток и запустить новый. – hooleyhoop