У меня есть 4 разных iPhone/Cocoa/Core Animation/Objective-C книги передо мной, а также многочисленные примеры кода из Интернета. Но почему-то я все еще чувствую, что мне не хватает фундаментального понимания того, как рисунок работает в Quartz 2D.
Является ли drawRect()
просто крючком для выполнения вашего кода чертежа? Или этот метод должен также перерисовывать регионы, которые "повреждены", и нуждаются в перекраске? Могу ли я просто нарисовать свой материал один раз, а затем он "прилипает", или я должен перерисовать всю сцену в любое время через drawRect()
? Объект Java Graphics2D работает таким образом - вы должны нарисовать весь свой "образ" каждый раз, когда вызывается paint(), поэтому вы должны быть готовы его перестроить в любое время (или кэшировать).
Как бы вы реализовали простую программу рисования? Вам нужно было "запомнить" каждую строку/точку/ход, которые пользователь рисовал, и реплицировать каждый раз, когда вызывается drawRect()
? Как насчет "закадрового" рендеринга; можете ли вы сделать весь свой чертеж, а затем вызвать [self setNeedsDisplay]
, чтобы ваши записи покраснели на экран?
Скажем, что в ответ на прикосновение пользователя я хочу поставить "X" на экран, где он коснулся. X должен оставаться там, и каждый новый контакт создает другой X. Должен ли я запомнить все эти координаты касания, а затем нарисовать их все в drawRect()
?
EDIT:
Если я не понял, ответы на joconor и Hector Ramos ниже противоречат друг другу. И это хорошая демонстрация моей путаницы в отношении этой темы.: -)