2016-06-18 2 views
3
  • Xcode 7
  • IOS Target 9,3
  • Swift 2

Я создал новые вкладки приложение в Xcode:Дети UIViewControllers из UITabBarController перекрывающейся Строки состояния

enter image description here

Я изменил фон первого созданного шаблона UIViewController supe вид г к серому, а затем я запустить приложение, как вы можете видеть на скриншоте первого UIView перекрываются Status Bar:

enter image description here

Я прочитал много статей, частичные указаны для прошивки 7 о выделении пространство для строки состояния.

Я также прочитал на apple.developer.com следующую цитату:

«Приложения, которые используют непрозрачную UINavigationController или UITabBarController автоматически поддерживать их содержание ниже в строке состояния.»

В целом эта ссылка на веб-сайт apple.developer.com выглядит несколько устаревшей.

Но с этим сказал, я ожидал UITabBarController загрузить закладками детей с пробелом, выделенной для статуса, как показано на раскадровку для UITabBarController:

enter image description here

Я попытался добавить следующий мой класс UITabBarController:

override func viewDidLoad() { 
    super.viewDidLoad() 

    self.edgesForExtendedLayout = UIRectEdge.None 
    self.automaticallyAdjustsScrollViewInsets = false; 
} 

Я посмотрел на многих StackOverflow вопрос и ответить на темы, я нашел человека, задающего тот же вопрос о Stackoverflow: Using UITabBarController but status bar covers view

Я знаю, как добавить ограничение в руководство Top Layout для каждого родительского вида на каждой вкладке UIViewController, но я стараюсь, чтобы избежать добавлений нового верхнего уровня UIView, потому что моя существующее UIViewControllers вкладки все имеет UILabels, UIButtons , UICollections и т. Д. В SuperView. Я не могу добавить ограничение на руководство Top Layout для SuperView в Xcode Storyboard.

С SuperView я не могу добавить верхний уровень Constraint по контролю Перетаскивания это кажется:

enter image description here

+0

Вы пытаетесь достичь внешнего вида iOS 7? – SeanCAtkinson

+0

Нет, я не пытаюсь достичь приложения pre-iOS7, я просто пытаюсь охватить пространство UITabBarController, выделенное для строки состояния на любых дочерних вкладках, в документации Apple, на которые ссылаются в моих вопросах, говорится, что это будет сделано, и изображение раскадровки UITabBarController также создает пространство для строки состояния на моем скриншоте Xcode в моем вопросе –

+0

Хорошо, я думаю, что они означают, что они автоматически сохраняют свой контент ниже строки состояния, так это то, что руководство по автоматической компоновке для прикрепления вашего контента к просмотру будет автоматически примите во внимание строку состояния. Поэтому, если вы используете его не в полноэкранном режиме, контент будет просто прикреплен к вершине UIView. Тем не менее, в этом случае это полный экран, и поэтому автоматическая компоновка автоматически предоставляет вертикальное руководство по размещению, которое добавляет дополнительные 20 пикселей, чтобы сохранить содержимое ниже строки состояния. Имеют смысл? – SeanCAtkinson

ответ

2

IOS обрабатывает это для вас внутри авто макета. Пока вид расширяется под строкой состояния, установите ограничения на расстояние 0 в ограничении «Вертикальное расстояние до верхнего макета», и вы увидите, что оно находится под строкой состояния, как ожидалось.

enter image description here

enter image description here

+0

Спасибо за ваш ответ. Я знаю, как добавить это ограничение в каждый вид сверху в каждом UiViewController, но я стараюсь избегать добавления нового представления верхнего уровня для многих моих UiViewControlers, на вкладках которых есть все UILabels, UIButtons, UICollections и т. Д. SuperView, который я не могу добавить ограничениям для –

+0

Вам не нужно добавлять другой вид верхнего уровня - почему вы не можете добавлять ограничения к элементам? – SeanCAtkinson

+0

Оформить изменения в моем вопросе, я добавил картинку внизу, когда я управляю перетаскиванием. Я не могу добавить ограничение в руководство Top Layout. –

0

Так что я нашел через помощь @SeanCAtkinson, что все работает как надо.Мне нужно было добавить ограничение в руководство Top Layout для любого UIViewController, который был вкладкой или дочерним элементом моего UITabBarController.

Я думал, что любой дочерний элемент, который был вкладкой, будет отображаться с интервалом, выделенным для строки состояния. Я думал, что UITabBarController делал это, основываясь на том, как она выглядит в Xcode 7 раскадровку:

enter image description here

Как вы можете видеть на скриншоте, UITabBarController означает, что вкладки будут отображаться в светло-серый квадрат, который вам может видеть верхний «guid» ниже строки состояния.

Это не тот случай, когда UITabBarController остановит строку состояния с перекрывающихся вкладок детей, будут ли UIViewControllers, UICollectionViewControllers или UITableViewControllers и т. Д. Вы должны использовать ограничение верхнего макета для ваших вкладок ваших детей.

Что нечеткое смущение состоит в том, что SuperView не может иметь ограничение на верхний макет, SuperView всегда будет полноэкранным.

Смежные вопросы