Нижняя длина длины направляющего выступа с вкладкой после нажатия

Итак, моя проблема связана с автоматической компоновкой и нижним макетом.

Здесь дизайн приложения:

UITabBarController

^ - Tab1: NavigationController с VC1 как root

     
  

^ - VC2 сдвигается и скрывает панель вкладок (полный экран, верхняя компоновка находится под навигационной панелью, нижний макет должен быть самым низким пикселем).

  

Когда VC2 нажат, нижнее руководство по макете составляет 49 точек в течение небольшого промежутка времени, а затем оно 0.

В течение этого времени мои подсмотры, которые ограничены этим нижним направляющим, расположены неправильно.

Когда руководство правильно установлено на 0 (самим навигационным контроллером, у меня нет кода, касающегося этого), позиции subviews тогда идеальны.

cast

Это не происходит в iOS 7.x(приложение поддерживает 7.0 +)... Я почти уверен, что ошибка iOS 8 и я искал обходной путь, но я не мог найти что-то, что исправляет это.

Я попытался решить проблему, вызвав представление диспетчеров навигации в макете (Will/Did) LayoutSubviews, но это не помогло.

Я видел этот пост, но предлагаемое решение не работает. Представление VC2 модально решает проблему, но это неприемлемо.

Заранее благодарим за помощь, сообщите мне, если вам нужно больше объяснений

Ответы

Ответ 1

У меня аналогичная проблема с UIPageViewController. После некоторых начальных исследований, похоже, это ошибка. Единственный способ, которым мне удалось это решить, - это привязать subview к супервизу, а не к нижнему макету, как это сделать.

Pin to superview image

Ограничение, по-видимому, соблюдается после того, как subview привязано к супервизу.

Надеюсь, что это поможет.

Ответ 2

Если вы используете автоматическую компоновку, попробуйте снять флажок "Extend Edges- > Under Bottom Bars" для TabBarController и всех его ViewControllers в Interface Builder.

Ответ 3

Я решил проблему, установив прозрачность табуляции как No

- (void)viewWillAppear:(BOOL)animated
{
    [super viewWillAppear:animated];
    self.tabBarController.tabBar.translucent = NO;
}

- (void)viewWillDisappear:(BOOL)animated
{
    [super viewWillDisappear:animated];
    self.tabBarController.tabBar.translucent = self.isTabBarTranslucent;
}