Каковы различия между UIView и CALayer?



оба имеют большинство одинаковых атрибутов, оба поддерживают различные виды анимации, оба представляют разные данные.
Каковы различия между UIView и CALayer?

1097   5  

5 ответов:

на iOS каждый UIView поддерживается основным анимационным CALayer, поэтому вы имеете дело с CALayers при использовании UIView, даже если вы этого не понимаете. В отличие от NSViews на Mac, которые развивались до того, как существовала основная анимация, UIViews предназначены для легких оболочек вокруг этих слоев.

Как я описываю в подобном вопросе " когда использовать CALayer на Mac / iPhone?", работа непосредственно с CALayers не дает вам значительную производительность преимущества перед UIViews. Одна из причин, по которой вы можете создать элемент пользовательского интерфейса с CALayers вместо UIViews, заключается в том, что его можно очень легко перенести на Mac. UIViews очень отличаются от NSViews, но CALayers почти идентичны на двух платформах. Вот почему основная структура графика выкладывает свои графики с использованием CALayers вместо других элементов пользовательского интерфейса.

одна вещь UIViews обеспечивает над CALayers встроенная поддержка для взаимодействия потребителя. Они справляются hit-тестирование касаний и других связанных с ними действий, которые вам нужно будет построить самостоятельно, если вы управляете иерархией CALayers. Это не так сложно реализовать самостоятельно, но это дополнительный код, который вам нужно будет написать при создании интерфейса CALayer-only.

вам часто нужно будет получить доступ к нижележащим слоям для UIView при выполнении более сложных анимаций, чем позволяет базовый класс UIView. Возможности анимации UIView выросли по мере созревания iOS SDK, но есть еще несколько вещей, которые лучше всего сделать, взаимодействуя с нижележащим CALayer.

из блога Рэй Вендерлих (учебник)

CALayers-это просто классы, представляющие прямоугольник на экране с визуальным контентом. "Но подождите, черт возьми, - скажете вы, - это же для чего нужны UIViews!- Это правда, но тут есть одна хитрость.: каждый UIView содержит корневой слой, к которому он обращается!

проще говоря, UIView наследует от UIResponder, обрабатывает события от пользователей, содержит CALayer, которые наследуют от NSObject, в основном фокусируются на рендеринге, анимации и т. д.

UIView - это контейнер для CALayers. Используя UIKit.

CALayer где мы рисуем содержание. Используя CoreGraphics

если вы работаете с пользовательскими элементами управления, такими как функции, было бы здорово продолжить работу с одним видом, содержащим больше слоев для точной собственной визуализации. Так как CALayers невесомы, чем UIView.

чтобы создать общий скелет для Mac и iOS, следуйте дизайну вашего приложения с помощью CALayers. Так как он доступен в обеих платформах.

UIView имея функцию, как сенсорные события, достигнутые с помощью делегатов -(void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event,tochesStart событий, как и другие UIKit функции.

на работу с CALayers использовать основные графические знания.Для любого простого представления рендеринга UIView достаточно.

большая разница UIView предназначен для CocoaTouch на мобильном устройстве. Он добавляет некоторый обработчик событий, который CALayer не предоставил.

Comments

    Ничего не найдено.