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

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

  • Просмотр содержимого контроллера при использовании Interface Builder
  • Правильный способ реализации updateConstraints
  • Нужно ли установить UIVIew.opaque в значение NO, если я использую clearColor в качестве backgroundColor?
  • Сохранение ориентации исходного вида при переходе в преобразованное представление
  • Сделать UIView перетаскиваемым пальцем
  • Заголовок заголовка таблицы выглядит как панель поиска
  • Рисование с использованием Core Graphics выглядит довольно коротко на дисплее Retina
  • Как представить UIViewController из SKScene?
  • 5 Solutions collect form web for “Каковы различия между UIView и CALayer?”

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

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

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

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

    Из блога Ray Wenderlich ( Tutorial )

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

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

    UIView – это контейнер для CALayers . Использование UIKit .

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

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

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

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

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

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

    PhoneC: Разработка iOS проста с помощью XCode, Swift3, UITableView, cocatouch, давайте создадим приложения для iPhone, iPad и Macbook.