Основы CALayer
Работайте со слоями, их свойствами и иерархией.
«Основы CALayer» — бесплатный урок Swift Academy на CoddyKit. Это урок 1 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения Swift Academy, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс Swift Academy содержит 4 уроков всего.
Что такое CALayer
CALayer — это основа, на которой строится всё видимое в UIKit. Каждое UIView отрисовывается слоем, который хранит его визуальное содержимое в виде текстуры на GPU.
Непосредственная работа со слоями открывает доступ к аппаратно ускоренной графике и анимации.
import UIKit
let layer = CALayer()Слои за представлениями
У каждого представления есть свойство layer. Настройка свойств слоя часто проще и дешевле, чем собственная отрисовка.
view.layer.cornerRadius = 12
view.layer.masksToBounds = trueГеометрия: рамка, границы и положение
У слоя есть bounds — его собственная система координат, position — положение его опорной точки в parent, — и производное свойство frame. Изменение любого из них обновляет остальные.
let layer = CALayer()
layer.bounds = CGRect(x: 0, y: 0, width: 100, height: 100)
layer.position = CGPoint(x: 150, y: 150)Опорная точка
anchorPoint (по умолчанию 0.5, 0.5 — центр) задаёт начало координат слоя для позиционирования и преобразований. Вокруг неё выполняются повороты и масштабирование.
layer.anchorPoint = CGPoint(x: 0, y: 0) // top-left pivotВизуальные свойства
Слои напрямую предоставляют свойства визуального оформления: backgroundColor (цвет CGColor), cornerRadius, borderWidth, borderColor и opacity.
layer.backgroundColor = UIColor.systemBlue.cgColor
layer.cornerRadius = 8
layer.borderWidth = 2
layer.borderColor = UIColor.white.cgColorТени
Слои рисуют тени с помощью shadowColor, shadowOpacity, shadowOffset и shadowRadius. Для повышения производительности задайте shadowPath.
layer.shadowColor = UIColor.black.cgColor
layer.shadowOpacity = 0.3
layer.shadowOffset = CGSize(width: 0, height: 4)
layer.shadowRadius = 6Подслои
Слои образуют дерево. Добавляйте дочерние элементы с помощью addSublayer; их положение задаётся в системе координат parent.
let parent = CALayer()
let child = CALayer()
child.frame = CGRect(x: 10, y: 10, width: 40, height: 40)
parent.addSublayer(child)Специализированные типы слоёв
UIKit предоставляет подклассы слоёв: CAShapeLayer для векторных контуров, CAGradientLayer для градиентов, CATextLayer для текста и CAReplicatorLayer для дублирования дочерних элементов.
let shape = CAShapeLayer()
shape.path = UIBezierPath(ovalIn: CGRect(x: 0, y: 0, width: 50, height: 50)).cgPath
shape.fillColor = UIColor.systemRed.cgColorГрадиентные слои
CAGradientLayer создаёт плавные переходы цветов, заданные свойствами colors, locations, startPoint и endPoint.
let gradient = CAGradientLayer()
gradient.colors = [UIColor.systemBlue.cgColor, UIColor.systemPurple.cgColor]
gradient.startPoint = CGPoint(x: 0, y: 0)
gradient.endPoint = CGPoint(x: 1, y: 1)contentsScale и резкость
Задайте contentsScale равным масштабу экрана, чтобы содержимое, нарисованное слоем, оставалось чётким на дисплеях Retina. Если забыть об этом, текст и фигуры будут размытыми.
layer.contentsScale = UIScreen.main.scaleСлои легковесны
Слои не обрабатывают события касания и не участвуют в автоматической компоновке; это чисто визуальные объекты. Поэтому для декоративного или анимируемого содержимого они дешевле представлений.
Проверка: CALayer
Проверьте, насколько Вы понимаете основы CALayer.
Итоги: основы CALayer
CALayer лежит в основе каждого представления UIKit и предоставляет визуальные возможности с ускорением на GPU: геометрию bounds/position/anchorPoint, оформление с радиусом углов, границами и тенями, а также дерево подслоёв.
Специализированные подклассы работают с фигурами, градиентами, текстом и дублированием. Задавайте contentsScale для чёткости и помните, что слои — это легковесные визуальные объекты без обработки касаний и автоматической компоновки. Эта основа обеспечивает последующие анимации.
Изучай Swift с ИИ-репетитором — бесплатно
Пиши и запускай код прямо в браузере, получай мгновенную помощь от ИИ-репетитора 24/7 и продолжи учиться на сайте или в приложении.
- Курсы
- 122
- Уроки
- 409
Часто задаваемые вопросы
Урок «Основы CALayer» бесплатный?
Да — полный текст урока «Основы CALayer» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс Swift Academy, подпишись на CoddyKit PRO. Курс Swift Academy содержит 4 уроков всего.
Чему я научусь в уроке «Основы CALayer»?
Работайте со слоями, их свойствами и иерархией. Ты практикуешь Swift Academy с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.
Нужен ли мне опыт, чтобы начать Swift Academy?
Предыдущий опыт не требуется. Swift Academy на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 1 из 4.
Сколько времени занимает урок «Основы CALayer»?
Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.
Можно ли писать и запускать код в этом уроке Swift Academy?
Да. Каждый урок Swift Academy включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.
Все уроки этого курса
- Основы CALayer
- Неявные и явные анимации
- Трансформации и трёхмерные эффекты
- Пользовательская отрисовка с Core Graphics