2010-01-07 2 views
0

Я не совсем уверен, что я прошу ...Рисование CGLayer вне метода drawRect: быстрее?

... но если вы создаете слоистые композиты в отдельных методах и рисуете их на вид также вне метода drawRect: ... .если может быть повышена производительность моего приложения?

Я на самом деле подклассифицирован puzzlePiece: класс UIView, где отображается головоломка, но перерисовывается теперь с помощью setNeedsDisplay, поскольку реализация чертежа выполняется в методе drawRect :. Приложение отстает.

Могу ли я улучшить производительность, если я избавлюсь от так называемого метода drawRect:?

Дело хочет получить внедрено: http://gotoandplay.freeblog.hu/

+0

Я просмотрел ваши сообщения в блогах; ваше внимание к визуальным деталям действительно превосходно и является важной частью отличных приложений для iPhone. –

+0

Спасибо. Я работаю графическим дизайнером в будние дни, поэтому я понял важность этого. – Geri

ответ

1

Я думаю, что вы хотите сделать здесь, чтобы иметь очень единый, простой UIView, который охватывает всю игровую площадку. Затем поместите каждую плиту в CALayer и прикрепите все CALayers к UIView и переместите их вокруг и поверните. Тогда не обязательно быть -drawRect: вообще. Вы будете делать все свои рисунки в своих слоях, и вы должны получить лучшую производительность таким образом. CALayer похож на UIView в принципе, но намного легче (быстрее и проще). CALayer - это в основном представление, которое можно только рисовать; он не может обрабатывать касания или события. Это родительский взгляд должен сделать это для него. Но пусть CALayer будет намного быстрее.

+0

Я боюсь, что повороты, приводимые в действие CALayer, получаются из-за того, что я избегаю сглаживания. Возможно, я должен использовать CALayers только в виде puzzlePiece. Это может быть «производитель производительности»? Мой пост, связанный с псевдонимом: http://gotoandplay.freeblog.hu/archives/2009/12/08/compactTangram_v13_-_problems_on_altialiasing/ – Geri

+0

Итак, CALayer является подклассом NSObject, я могу подклассировать свою puzzlePiece от CALayer и получить производительность лучше? Надеюсь на это. – Geri

+0

Правильно, и вы все равно можете использовать поворот слоя. И вы можете подклассы или использовать делегат. Начните здесь: http://developer.apple.com/iphone/library/documentation/cocoa/Conceptual/CoreAnimation_guide/Articles/ProvidingCALayerContent.html Затем я рекомендую использовать CGContextFillPath() для рисования вашего пути, а не изображения (что вызывает проблема), но всегда рисуйте его в простейшем для расчета макета. Затем используйте преобразование, чтобы повернуть его. http://developer.apple.com/iphone/library/documentation/cocoa/Conceptual/CoreAnimation_guide/Articles/Layers.html –