Нижняя длина длины направляющего выступа с вкладкой после нажатия
Итак, моя проблема связана с автоматической компоновкой и нижним макетом.
Здесь дизайн приложения:
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;
}