У меня есть ViewController (B), который обрабатывается с помощью PageViewController, который находится внутри другого ViewController (A), и откройте его модальным. Я сосредоточил ViewController (B) точно в середине экрана. Это прекрасно работает.Получить высоту рамки без высоты навигационной панели и высоты панели табуляции в иерархии более глубокого обзора.
Но когда я нажимаю ViewController (A) из NavigationController, кадр ViewController (B) имеет большой размер и простирается ниже NavigationBar и TabBar. Но я хочу, чтобы это было сосредоточено между NavigationBar и TabBar.
Я знаю, как я могу получить высоту навигационной панели и TabBar, чтобы я мог изменить размер ViewController (B):
var topBar = self.navigationController?.navigationBar.frame.height
var bottomBar = self.tabBarController?.tabBar.frame.height
Но это не работает глубоко в иерархии Vier в ViewController (B) , self.navigationController и self.tabBarController равны нулю. Итак, как я могу получить высоту панели навигации и вкладки в иерархии представлений? Или мне просто нужно передать его с одного ViewController на другой, пока я не получу ViewController (B)? Или есть еще один более очевидный способ сосредоточить взгляд? Благодарю.
(я попытался опубликовать скриншоты для лучшего понимания, но мне не хватает необходимых очков репутации размещать фото, извините)
Try 'yourview.bounds' после viewDidAppear. – Elto
Оценки не дают мне topLayoutGuide и/или bottonLayoutGuide – Darko
Если вы открыли контроллер вида по модулю, это не ребенок контроллера с панелью вкладок, поэтому self.tabBarController равен нулю. Он находится над ним в стеке навигации. Вам нужно будет передать эту информацию, например, в режиме подготовки (для segue :). Если вы открыли модально, то почему вы хотите, чтобы пользователь подумал, что они могут щелкнуть по кнопкам вкладки (которых они, вероятно, не могут)? Может быть, вы не хотите открывать модально. – RowanPD