Ответ
Нет, не может. Система UIKit автоматически синхронизирует эти значения. Если вы попытаетесь установить frame.size.height меньше, чем текущая bounds.size.height, система изменит bounds.size.height, чтобы она соответствовала новой высоте frame.
Объяснение:
frame— прямоугольник, определяющий положение и размеры view в системе координат его супервью (родителя).bounds— прямоугольник, определяющий видимую область view в его собственной системе координат (часто с началом в(0, 0)).
Пример, демонстрирующий синхронизацию:
let view = UIView()
// Изначально frame и bounds равны
view.frame = CGRect(x: 0, y: 0, width: 100, height: 100)
print(view.bounds) // (0.0, 0.0, 100.0, 100.0)
// Пытаемся установить bounds больше frame
view.bounds = CGRect(x: 0, y: 0, width: 150, height: 150)
print(view.bounds) // (0.0, 0.0, 100.0, 100.0) - bounds УСЕЧЕНЫ до frame!
// Меняем frame (уменьшаем высоту)
view.frame.size.height = 50
print(view.bounds) // (0.0, 0.0, 100.0, 50.0) - bounds.height изменилась вслед за frame.height
Практический вывод: Нельзя использовать bounds для «масштабирования» контента внутри view. Для этого следует использовать преобразования (transform) или менять frame/bounds супервью.