Почему размер viewWillTransition отличается от исходного размера UIView, когда ViewController имеет UITabBar? - PullRequest
0 голосов
/ 07 октября 2018

У меня есть пользовательский подкласс 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 к полученному размеру, но для меня это выглядит неоптимальным решением.

...