Что такое CALayer?
Что такое CALayer (как видно из layer
свойство на UIView) и где бы мы использовали такой класс?
3 ответа
UIView - это агрегатный класс. Он содержит "материал" для цепочки респондента события, материал для обработки иерархии представления и т. Д., А также материал, касающийся того, что рисовать на дисплее. CALayer для UIView - это просто материал, касающийся того, что рисовать: биты изображения, масштаб, преобразование, свойства анимации и т. Д.
Интерфейс Cocoa Touch рисуется путем совмещения слоев... видов сверху видов сверху окна. CALayer - это слой в стеке композиции, который располагается поверх некоторых слоев и, возможно, под другими слоями. (например, изображение в кнопке в ячейке таблицы в представлении в разделенном представлении и т. д.)
Если вы хотите сделать что-то особенное с тем, что рисует или отображает представление, которое не предусмотрено в стандартных методах класса UIView, возможно, можно сделать это что-то особенное, перейдя непосредственно к CALayer: возможно, поменять местами слои между представлениями и / или изображения, рисунки вне экрана, пользовательские анимации и т. д.
В справочном документе по классу Apple CALayer многое еще объясняется
UIView построен на CALayers. Это просто классы, представляющие собой визуальный контент для UIViews. Просто напечатайте UIView с помощью NSLog и проверьте, мы могли видеть его слой и рамку содержимого. Используйте Core Graphics для непосредственной работы с CALayers, а UIView - это элемент UIKit. self.view.layer.backgroundColor = [UIColor redColor].CGColor;
Основной слой анимации iOS (CALayer, Layer)
является первой точкой входа, которая включает в себя необходимые функции (например, обработку события касания [About], рендеринг...) и предоставляет более низкий уровень API. в данном случае отвечает за графику/визуализацию - рендеринг, верстка, анимация
UIKit -> Core Animation -> OpenGL, Core Graphics -> Hardware
имеет , иcenter
которые на самом деле разоблачаютCALeyr
-frame
,bounds
, иposition
[О]
содержит корень, который может содержать подслои
let layer = CALayer()
layer.frame = CGRect(origin: CGPoint(x: 0, y: 0), size: CGSize(width: 50, height: 50))
layer.backgroundColor = UIColor.magenta.cgColor
view1.layer.addSublayer(layer)
Вы можете найти множество случаев, где используется: анимация, угловой радиус, тень...
Вы можете использоватьCALayer
для более низкоуровневых вещей, чемUIView
имеет
Вы можете дать имя слою, чтобы управлять своими слоями.
view.layer.name = "some name"
Обратите внимание, что это дополнительная работа со слоями, например, когда вы меняете внешний вид (светлый, темный)
Когда пользователь изменяет внешний вид системы, система автоматически просит каждое окно и представление перерисовать себя.
Слои отладки из Xcode v11.4
Debug View Hierarchy -> Editor -> Show Layers