Таким образом, большинство проблем можно легко разделить, поэтому вам не нужно все время рендерить. Это снижает сложность и улучшает производительность, если все сделано хорошо. Если сделано плохо, это может быть несколько намного хуже.

я 4 разныхiPhone / Какао / Базовая анимация / Objective-C книги передо мной, а также многочисленные примеры кода из Интернета. Тем не менее, я все еще чувствую, что мне не хватает фундаментального понимания того, как рисование работает вКварц 2D.

ЯвляетсяdrawRect() означает просто быть крючком для выполнения вашего кода рисования? Или этот метод должен также перерисовать регионы, которые «повреждены» и нуждаются в перерисовке? Могу ли я просто нарисовать свои вещи один раз, а потом они «прилипнут», или я должен перекрасить всю сцену в любое время черезdrawRect()? Java-объект Graphics2D работает таким образом - вы должны рисовать все свое «изображение» каждый раз, когда вызывается paint (), поэтому вы должны быть готовы к его повторному построению в любое время (или кешированию).

Как бы вы реализовали простую программу для рисования? Придется ли вам «запоминать» каждую линию / точку / обводку, которую нарисовал пользователь, и повторять ее каждый разdrawRect() называется? Как насчет рендеринга за кадром? Вы можете сделать все свои рисунки, а затем позвонить[self setNeedsDisplay] чтобы ваши записи были сброшены на экран?

Допустим, в ответ на прикосновение пользователя я хочу поставить «Х» на экране, где он коснулся. Х должен оставаться там, и каждое новое прикосновение производит еще один Х. Нужно ли мне помнить все эти координаты касания, а затем нарисовать их все вdrawRect() ?

РЕДАКТИРОВАТЬ:

Если я не правильно понял, ответы Джоконора и Гектора Рамоса ниже противоречат друг другу. И это хорошая демонстрация моего замешательства по этому вопросу. :-)

Ответы на вопрос(4)

Ваш ответ на вопрос