Подтвердить что ты не робот

UITabBar оставляет белый прямоугольник, когда скрывается

Мне не удалось найти приемлемое для Google решение, которое может быть применено к моему проекту.

Мое приложение - графический инструмент с тремя вкладками; один для самого графика, а два других предназначены для функций поиска/поиска для вещей, которые могут быть добавлены в график. Все вкладки являются навигационными контроллерами.

Вкладка для самого графика, когда в портретном режиме, отображает небольшой предварительный просмотр графика и перечисляет детали каждого объекта, который находится на графике ниже, и отображает панель вкладок внизу.

Когда пользователь поворачивается в альбомный режим, график становится полным, а все остальное, включая панель вкладок, исчезает. Вот где я столкнулся с проблемой, так как GLView для моего графика всегда затенен белым прямоугольником, где была панель вкладок.

Я попытался изменить размер представления контроллеров навигации на весь экран, изменив размер представления контроллеров панели вкладок на весь экран, изменив размер рамки самой панели вкладок на CGRect (0,0,0, 0), становясь эмоционально обезумевшими, ударяя кулаками по столу, выкрикивая оскорбительный язык в MacBook и т.д.; все безрезультатно.

Как я могу заставить его работать?

4b9b3361

Ответ 1

У меня возникла эта проблема, и я решил ее, изменив рамку подкатегории табуляции для моего представления содержимого (в панели вкладок есть 2 подзаголовка - просмотр содержимого (# 0) и представление в виде бара (# 1)):

[[self.tabBarController.view.subviews objectAtIndex:0] setFrame:FULLSCREEN_FRAME];

Ответ 3

Кажется, у вас проблема с укрытием нижней панели в виде панели вкладок...., с которой я столкнулся и много сделал для этого. Я считаю это ошибкой с этой вкладкой. Тогда и мы... может использовать какой-то трюк.....

Вы можете попробовать это и определенно поможете, если попытаетесь скрыть панель вкладок и покинете пустое пространство.

для адского кодирования вам нужно просто написать

[self setHidesBottomBarWhenPushed:YES];

когда вы нажимаете на другое представление, где вам не нужна панель вкладок, просто напишите

twitDetObj=[[TwitDetail alloc] initWithNibName:@"TwitDetail" bundle:nil];
[self.navigationController pushViewController:twitDetObj animated:YES];
self.hidesBottomBarWhenPushed=YES;
[twitDetObj release];

Надеюсь, это сработает для вас.....

Ответ 4

Это работает для меня:

[[self.tabBarController.view.subviews objectAtIndex:0] setFrame:CGRectMake(0, 0, 320, 480)];

У меня был этот код в окне viewControllers.

Ответ 5

Вы уверены, что он затенен, а не просто A) не перерисовывается или B) кадр вашего GLView не занимает это пространство?

Ответ 6

некоторые из представлений currentViewController.view контроллера представления панели вкладок имеют параметр clipToBounds, установленный в YES (это имя класса UITransitionView, если не ошибочно). Для доступа к ней используйте

tabBarController.currentViewController.view.superview.superview.clipToBounds = NO;

после этого ваши попытки изменить размер представления не будут ограничены ничем и будут успешными. Удачи!

Ответ 7

Это всего лишь обходной путь, но попробовали ли вы представить график, когда пользователь поворачивается в альбом? Это должно затенять панель вкладок.

Вы можете избежать перехода с помощью

[viewController presentModalViewController:graph animated:NO]

Ответ 8

из-за того, что пространство, в котором была панель вкладок, не было выделено другим представлениям, когда у вас установлена ​​скрытая вкладка, вы можете установить соответствующее представление, чтобы растянуть или заполнить весь экран, например, заполнить масштаб или заполнить что-то вроде этого или сделать вид больше чем экран iphine, так что, когда вы меняете телефон на пейзаж, он может заполнить экран

Ответ 9

Проверьте UIView внизу. Он может быть установлен в белый цвет, поэтому, когда вы скрываете вкладку, вы показываете белый UIView. Попробуйте установить UIView на прозрачный.

Ответ 10

Я думаю, вам нужно установить self.navigationController.view.frame в полный размер, т.е. на экран экрана UIApplication до того, как установить скрытую вкладку

Ответ 11

Вкл. после скрытия tababr и перехода к определенному виду. Tabbar показывал пробел выше uitababr. Это решило мою проблему

-(void)viewWillAppear:(BOOL)animated
{ 
    [[self.tabBarController.view.subviews objectAtIndex:0] setFrame:CGRectMake(0, 0, 320, 568)];

}

Ответ 12

в режиме просмотра нажата

- (BOOL)hidesBottomBarWhenPushed
{
    return YES;
}

Ответ 13

- (void)hidesTabBar:(BOOL)hidden {
    [UIView beginAnimations:nil context:NULL];
    [UIView setAnimationDuration:0];

    for (UIView *view in self.tabBarController.view.subviews) {
        if ([view isKindOfClass:[UITabBar class]]) {
            if (hidden) {
                [view setFrame:CGRectMake(view.frame.origin.x, [UIScreen mainScreen].bounds.size.height, view.frame.size.width , view.frame.size.height)];
            } else {
                [view setFrame:CGRectMake(view.frame.origin.x, [UIScreen mainScreen].bounds.size.height - 49, view.frame.size.width, view.frame.size.height)];
            }
        } else {
            if([view isKindOfClass:NSClassFromString(@"UITransitionView")]) {
                if (hidden) {
                    [view setFrame:CGRectMake(view.frame.origin.x, view.frame.origin.y, view.frame.size.width, [UIScreen mainScreen].bounds.size.height)];
                } else {
                    [view setFrame:CGRectMake(view.frame.origin.x, view.frame.origin.y, view.frame.size.width, [UIScreen mainScreen].bounds.size.height - 49 )];
                }
            }
        }
    }

    [UIView commitAnimations];
}

Ответ 14

Мое решение: установите self.edgesForExtendedLayout = .None в вашем контроллере просмотра viewDidLoad().

Ответ 15

ПРИМЕЧАНИЕ. Это решение состоит в том, чтобы просто удалить пробел, оставшийся после скрытия панели вкладок.

Для скрытия панели вкладок лучшее решение - @Michael Campsall ответить здесь

Простейшим решением для этого является изменение нижних ограничений вашего представления (в моем случае его tableView), вместо того, чтобы давать нижние ограничения с помощью BottomLayoutGuide, предоставить его с помощью супервизора. Скриншоты прилагаются для справки.

Ограничения, показанные ниже в скриншотах, создают проблему, изменяют ее согласно следующему снимку экрана

. введите описание изображения здесь

Фактические ограничения для удаления пробела должны соответствовать этому (ниже) снимку экрана.

введите описание изображения здесь

Ответ 16

Я предполагаю, что вы уже проверили стрелки авторазмера на вашем представлении?

Ответ 17

Вы пытались скрыть UITabBar с помощью

tab_bar.hidden = YES