Как получить доступные границы внутри UITabBarController?

StackOverflow https://stackoverflow.com/questions/600561

  •  03-07-2019
  •  | 
  •  

Вопрос

Как узнать размер панели вкладок внизу при использовании UITabBarController? Аналогично, как узнать, сколько места у вас есть внутри представления с вкладками для вашего контента?Я вижу много примеров, когда люди присваивают размер своих дочерних представлений вкладок размеру [[UIScreen mainScreen] applicationFrame], что не может быть правильным, поскольку панель вкладок занимает некоторое место в нижней части экрана.

Кроме того, можно ли изменить размер панели вкладок?

Спасибо, Райан

Это было полезно?

Решение

Причина, по которой вы можете использовать applicationFrame, заключается в том, что UITabBarController изменяет размеры представлений своих субконтроллеров, поэтому, пока ваше представление поддерживает правильное изменение размера, все будет работать.

Вы можете узнать размер панели вкладок, обратившись к свойству tabBar контроллера панели вкладок и посмотрев на ее рамку.Общий размер панели вкладок плюс область для представления можно узнать, посмотрев на рамку свойства представления контроллера панели вкладок, поэтому небольшое вычитание даст вам искомое число:

CGFloat myViewHeight = tabBarController.view  .size.height
                     - tabBarController.tabBar.size.height;

Другие советы

Старый вопрос, но всё же:

Если вы не загружаете свое представление из NIB, установите флаги автоматического изменения размера в функции loadView;что-то вроде этого:

self.view.autoresizingMask = UIViewAutoresizingFlexibleHeight |
                             UIViewAutoresizingFlexibleWidth;

Если вы это сделаете, вы можете использовать [[UIScreen mainScreen] applicationFrame], чтобы указать фрейм вашего представления;его размер будет изменен автоматически, если присутствует панель вкладок.

Если у вас есть NIB для вашего представления, autoresizingMask устанавливается автоматически с помощью Interface Builder.

Маркус

Если вы знаете, как изменить размер UITabBar, вы можете изменить размер UITabBar UITabBarController.Вы можете получить доступ к объекту, взяв

[[UITabBarController subviews] objectAtIndex:0]

Но в документации рекомендуется не обращаться к объекту напрямую.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top