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