Что такое 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

[Маски для iOS]

[тень iOS]

Другие вопросы по тегам