iPhone: нет возможности рисовать на экране вне drawRect? - PullRequest
4 голосов
/ 13 мая 2010

Есть ли способ рисовать на экране iPhone (на UIView в UIWindow) вне метода drawRect () этого представления? Если да, то как мне получить графический контекст?

В графическом руководстве упоминается класс NSGraphicsContext, но соответствующая глава выглядит как слепое копирование / вставка из документов Mac OS X, и в iPhone SDK такого класса нет.

РЕДАКТИРОВАТЬ: я пытаюсь изменить содержимое представления в обработчике события касания - выделите визуальный элемент, к которому прикоснулись. В Windows я бы использовал GetDC () / ReleaseDC (), а не полный цикл InvalidateRect () / WM_PAINT. Пытаюсь сделать то же самое здесь. Размещение активных (осязаемых) элементов в виде подпредставлений является огромным снижением производительности, поскольку их около ста.

Ответы [ 2 ]

5 голосов
/ 14 мая 2010

Нет. Рисование - это работа drawRect: (или CALayer). Даже если бы вы могли рисовать в другом месте, это было бы запахом кода (как на Mac). Любой другой код должен просто обновить состояние вашей модели, а затем установить себя как нужное отображение.

Когда вам нужен дисплей, перемещение кода дисплея в другое место не заставит его работать быстрее. Если вам не нужно отображение (и поэтому оно не установлено как нужное отображение), код отображения не будет работать, если он находится в drawRect:.

Я пытаюсь изменить содержимое представления в обработчике события касания - выделите визуальный элемент, к которому прикоснулись. В Windows я бы использовал [код Windows]. … Размещение активных (осязаемых) элементов в виде подпредставлений - огромный штраф производительности, поскольку их около ста.

Похоже, Core Animation может быть более подходящим для этого.

0 голосов
/ 13 мая 2010

Я не думаю, что вы сможете рисовать вне drawRect ... но чтобы получить текущий графический контекст, все, что вы делаете, это CGContextRef c = UIGraphicsGetCurrentContext (); надеюсь, это поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...