Ответ
bounds останутся неизменными, так как они определяют внутреннюю систему координат view и не зависят от внешних трансформаций.
Ключевые отличия:
| Свойство | Определение | Зависит от transform | Изменяется при повороте родителя |
|---|---|---|---|
bounds |
Прямоугольник в собственной системе координат view (origin, size) | ❌ Нет | ❌ Нет |
frame |
Прямоугольник в системе координат родительского view | ✅ Да | ✅ Да |
Пример:
let parentView = UIView(frame: CGRect(x: 0, y: 0, width: 100, height: 100))
let childView = UIView(frame: CGRect(x: 20, y: 20, width: 60, height: 60))
parentView.addSubview(childView)
// Поворачиваем родителя на 45°
parentView.transform = CGAffineTransform(rotationAngle: .pi / 4)
print("Parent bounds:", parentView.bounds) // (0.0, 0.0, 100.0, 100.0) - не изменились
print("Parent frame:", parentView.frame) // Изменится (может стать отрицательным)
print("Child bounds:", childView.bounds) // (0.0, 0.0, 60.0, 60.0) - не изменились
print("Child frame:", childView.frame) // Изменится относительно родителя
Практическое значение:
boundsиспользуют для внутреннего layout (например, вdrawRect:)frameиспользуют для позиционирования относительно родителя- При анимациях с transform работают с
frame, аboundsостаются стабильными