Відповіді:
На iOS кожен UIView підтримується базовим CALayer анімації, тому ви маєте справу з CALayers під час використання UIView, навіть якщо ви цього не усвідомлюєте. На відміну від NSViews на Mac, що еволюціонував до існування Core Animation, UIViews призначені для легкої обгортки навколо цих CALayers.
Як я описую в аналогічному запитанні "Коли використовувати CALayer на Mac / iPhone?" , робота безпосередньо з CALayers не дає вам значних переваг у порівнянні з UIViews. Однією з причин, можливо, ви хочете створити елемент інтерфейсу користувача за допомогою CALayers замість UIViews, це те, що він може бути дуже легко перенесений на Mac. UIView дуже відрізняються від NSViews, але CALayers майже однакові на двох платформах. Ось чому основна рамка основної графіки розкладає свої графіки, використовуючи CALayers замість інших елементів інтерфейсу.
Одне, що надає UIView для CALayers, - це вбудована підтримка взаємодії з користувачами. Вони обробляють хіт-тестування на дотики та інші пов'язані з цим дії, які вам потрібно буде створити самостійно, якщо керуєте ієрархією CALayers. Сам реалізувати це не так складно, але це додатковий код, який потрібно буде написати при створенні інтерфейсу, призначеного лише для CALayer.
Вам часто буде потрібно звертатися до базових шарів для UIView, виконуючи складніші анімації, ніж дозволяє базовий клас UIView. Можливості анімації UIView зросли по мірі дозрівання SDK для iOS, але все ж є кілька речей, які найкраще зробити, взаємодіючи з базовим CALayer.
З блогу Рея Вендерліха ( Навчальний посібник )
CALayers - це просто класи, що представляють прямокутник на екрані з візуальним вмістом. "Але зачекайте чортову хвилину", ви можете сказати, "для цього призначені UIView!" Це правда, але в цьому є хитрість: кожен UIView містить кореневий шар, до якого він звертається!
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 не надав.
UIView: Перегляди мають складніші ієрархічні схеми. Вони можуть отримувати взаємодії з користувачами, такі як крани, щипки, кліпи тощо. Робота з UIViews відбувається в основному потоці, це означає, що вона використовує живлення процесора.
CALayer: Шари з іншого боку мають більш просту ієрархію. Це означає, що вони швидше розв’язуються та швидше малюють на екрані. Немає накладних нападів на відміну від представлень. Шари малюються безпосередньо на GPU. Це відбувається на окремому потоці, не обтяжуючи процесор.
Детальніше: https://medium.com/@fassko/uiview-vs-calayer-b55d932ff1f5