У меня есть пользовательский подкласс UITabBarController
с высотой стержня больше, чем по умолчанию UITabBar
высота (высота по умолчанию - 49).
В потомке UIViewController
я проверяю размер основногоUIView
примерно так:
print(view.frame)
, который возвращает ожидаемое мной значение, полный размер вида без учета Safe Area
, то есть (414.0, 736.0)
в книжной ориентации на моемiPhone 6 Plus.
Мне нужно обновить несколько кадров подпредставления, когда ориентация интерфейса изменяется в viewWillTransition
.Я хотел бы использовать тот же код для фреймов, что и в viewDidLoad
, который должен просто использовать новый вид CGSize
для настройки фреймов подпредставления.Однако по неизвестным мне причинам CGSize
, переданный в viewWillTransition
, имеет меньшие размеры, чем исходный вид.
Например, если исходные размеры в книжной ориентации были (414.0, 736.0)
, переданные размерыviewWillTransition
равны (736.0, 365.0)
.
Я заметил, что разница в двух измерениях идентична стандартной высоте UITabBar (49) .Я не знаю, является ли это совпадением, но я склонен думать, что это связано.
При переключении обратно в исходную ориентацию CGSize
, переданное в viewWillTransition
, остается меньше, чем оригинал (обратно к (365.0, 736.0)
вместо полного (414.0, 736.0)
в моем случае).
Почему бы viewWillTransition
получило меньшие размеры, чем размеры исходного вида?Я могу решить эту проблему, вручную добавив 49 к полученному размеру, но для меня это выглядит неоптимальным решением.