UISplitView с UITabbar

У меня странный, который я не могу исправить. В настоящее время я работаю над обновлением своего приложения до iOS7. Все это работало в iOS6. Это универсальное приложение и, таким образом, использует те же файлы xib. Однако iPad использует UISplitViews для некоторых. Как я уже сказал, все это работало в iOS6, и все это тоже работает на iPhone.

Проблема заключается в серой полосе внизу. Я изменил панель вкладок, чтобы быть непрозрачным, чтобы правильно перемещать просмотры, поскольку у меня был некоторый пользовательский интерфейс, обрезанный снизу просмотров, и который попал под панель вкладок, отвлекшись от него. Но если я верну его обратно к полупрозрачному бару, он поднимется ниже, но растянется правильно. если я не буду, он добавит бар. Другие вкладки отлично работают, когда НЕ используют splitview.

Программа UISplitviewController добавлена ​​программно.

См. прикрепленное изображение для лучшего описания.

The grey bar is between my splitview and tabbar

Это я пробовал:

  • Добавлена ​​функция авторазрешения в режиме splitview
  • Проверено xib для подзапросов в режиме splitviews для автоматического изменения размера
  • Пытался заставить splitview быть границ экрана.
  • Удалены клипы для ограничений во всех представлениях
  • Удалены подпрограммы autoresize

Любые идеи будут приветствоваться.

Спасибо всем.

UPDATE:

установка цвета фона в uisplitview, он окрашивает черную полоску. Таким образом, uisplitview определенно растягивается.

Ответы

Ответ 1

Я подклассифицировал UISplitViewController и добавил строку ниже для просмотраDidLoad и установил серой строку.

self.extendedLayoutIncludesOpaqueBars = YES;

Ответ 2

Я считаю, что нашел альтернативное решение для вас. У меня была такая же проблема, главным образом потому, что мы делаем что-то против Apple Guidelines, у которой есть SplitViewController, вложенный в контроллер Tabbar (SplitView должен быть корневым представлением). Это было хорошо в iOS 5/6, но теперь в iOS 7 слишком много побочных эффектов для этого.

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

И как всегда, высота SplitViewcontroller не может быть изменена, так как она определяется высотой видимого окна.

Я пробовал все, что вы делали, а затем некоторые. Реальное решение исходило от использования стороннего контроллера Split View.

Я рекомендую переключиться на https://github.com/mattgemmell/MGSplitViewController. Этот контроллер с разделенным изображением на самом деле представляет собой один большой вид с живыми внутри него видами контейнера. Из-за этого вы избегаете всех побочных эффектов, связанных с размещением реального контроллера разделенного вида в панели вкладок.

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

Это был единственный способ решить эту проблему, сообщите мне, если вы найдете альтернативу.

Ответ 3

Вместо создания подкласса для UISplitViewController, я просто добавил этот код в мой мастер viewDidLoad:

self.splitViewController?.extendedLayoutIncludesOpaqueBars = true

Ответ 4

Для контроллера, который является подробным представлением UISplitViewController, вы просто это делаете:

-(UITabBarController*)tabBarController{
    return nil;
}