Ответ
Свойство transform — это аффинное (2D) или 3D-преобразование, применяемое к слою (CALayer) или представлению (UIView). Оно модифицирует систему координат элемента для визуальных трансформаций без изменения его фактического фрейма (frame).
Основные типы преобразований:
- Перемещение (Translation):
CGAffineTransform(translationX:y:) - Масштабирование (Scale):
CGAffineTransform(scaleX:y:) - Вращение (Rotation):
CGAffineTransform(rotationAngle:)
Пример комбинирования 2D-трансформаций:
// Создаем и применяем несколько преобразований
let scaleTransform = CGAffineTransform(scaleX: 0.8, y: 0.8)
let rotateTransform = CGAffineTransform(rotationAngle: .pi / 6) // 30 градусов
let translateTransform = CGAffineTransform(translationX: 50, y: 20)
// Объединяем: сначала масштаб, потом поворот, потом сдвиг
myView.transform = scaleTransform.concatenating(rotateTransform).concatenating(translateTransform)
Пример 3D-трансформации (с перспективой):
var transform = CATransform3DIdentity
transform.m34 = -1.0 / 500.0 // Задает перспективу (точку схода)
transform = CATransform3DRotate(transform, .pi / 4, 1, 0, 0) // Поворот на 45° по оси X
myView.layer.transform = transform
Ключевые особенности:
- Производительность: Аппаратно ускоряется Core Animation.
- Анимация: Свойство
transformлегко анимируется с помощьюUIView.animateилиCABasicAnimation. - Интерактивность: Часто используется для жестов (например, масштабирование пальцами).