Swift Academy · Урок

Основы CALayer

Работайте со слоями, их свойствами и иерархией.

Урок 1 из 413 шагов

«Основы 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 — локальная установка не требуется.

Все уроки этого курса

  1. Основы CALayer
  2. Неявные и явные анимации
  3. Трансформации и трёхмерные эффекты
  4. Пользовательская отрисовка с Core Graphics
← Назад к Swift Academy