Ответ
Применение трансформации поворота (CGAffineTransform(rotationAngle: .pi / 2)) к UIView изменяет ее визуальное представление и систему координат, но не затрагивает внутреннюю геометрию.
Ключевые эффекты:
- Визуальный поворот: Вью отрисовывается повернутой на 90° в координатах своего супервью.
- Изменение системы координат: Локальная система координат вью (
bounds) также поворачивается. Это влияет на размещение сабвью и обработку касаний. - Изменение frame: Свойство
frame(прямоугольник в координатах родителя) становится описывающим минимальный прямоугольник, вмещающий повернутую вью, и его значения меняются. - Сохранение bounds: Свойство
bounds(прямоугольник в собственных координатах) иcenterостаются неизменными.
Пример и вывод:
let view = UIView(frame: CGRect(x: 50, y: 50, width: 100, height: 50))
print("До трансформации - Frame: (view.frame), Bounds: (view.bounds)")
// До трансформации - Frame: (50.0, 50.0, 100.0, 50.0), Bounds: (0.0, 0.0, 100.0, 50.0)
view.transform = CGAffineTransform(rotationAngle: .pi / 2) // 90°
print("После трансформации - Frame: (view.frame), Bounds: (view.bounds)")
// После трансформации - Frame: (75.0, 25.0, 50.0, 100.0), Bounds: (0.0, 0.0, 100.0, 50.0)
Практическое следствие: Для позиционирования и анимации трансформированной вью используйте свойства center и bounds, а не frame, вычисление которого ресурсоемко.