Как скрыть панель вкладок при первой загрузке и показать на последующих экранах? - PullRequest
0 голосов
/ 16 августа 2010

.hidesBottomBarWhenPressed = NO; не работает, потому что представление не выдвигается. Я хочу, чтобы панель вкладок была скрыта на первом экране и могла отображаться снова через несколько экранов.

Как я могу это сделать?

Ответы [ 2 ]

1 голос
/ 16 августа 2010

Создайте подкласс вашего UITabBarController и добавьте функцию, подобную этой

- (void) hideTabBar:(BOOL)hide animated:(BOOL)animated {

    if (tabBarHidden == hide) { return; }

    if (animated) {
        [UIView beginAnimations:nil context:NULL];
        [UIView setAnimationDuration:1.5];
    }

    for(UIView *view in self.view.subviews) {

        if([view isKindOfClass:[UITabBar class]]) {

            if (!hide) {
                [view setFrame:CGRectMake(view.frame.origin.x, view.frame.origin.y-49, view.frame.size.width, view.frame.size.height)];
            } else {
                [view setFrame:CGRectMake(view.frame.origin.x, view.frame.origin.y+49, view.frame.size.width, view.frame.size.height)];
            }
        } else {
            if (!hide) {
                [view setFrame:CGRectMake(view.frame.origin.x, view.frame.origin.y, view.frame.size.width, view.frame.size.height-49)];
            } else {
                [view setFrame:CGRectMake(view.frame.origin.x, view.frame.origin.y, view.frame.size.width, view.frame.size.height+49)];
            }

        }
    }

    if (animated) { [UIView commitAnimations]; }

    tabBarHidden = hide;

}   

Пока вы добавите такую ​​функцию, добавьте такую ​​функцию, чтобы позволить панели вкладок вращаться

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation {
    return allowRotate;
} 
1 голос
/ 16 августа 2010

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

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

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

См. Руководство по интерфейсу пользователя iPhone.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...