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

Можно ли скрыть вкладку, когда нажата кнопка, чтобы разрешить полноэкранный просмотр содержимого?

У меня есть UITabBar в подробном представлении моего приложения на основе навигации. Я храню текст и изображения в виде таблицы и хотел бы, чтобы пользователь мог нажимать на ячейку, чтобы скрыть контроллер навигации и панель вкладок для полноэкранного просмотра содержимого.

Я нашел этот код для скрытия верхних баров, но скрыть табуляцию не так просто.

[[UIApplication sharedApplication] setStatusBarHidden:YES animated:YES];
 [self.navigationController setNavigationBarHidden:YES animated:YES];

Кто-нибудь знает, как это сделать?

Этот код не работает, чтобы скрыть tabBar после того, как представление уже загружено.

  yourTabViewController.hidesBottomBarWhenPushed = YES;

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

    self.tabBarController.tabBar.hidden = YES;
4b9b3361

Ответ 1

Лучшим обходным решением, которое я нашел, является изменение размера представления, чтобы он охватывал панель. Здесь мой код для скрытия statusBar, navBar и tabBar при выборе строки:

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {

AppDelegate *appDelegate = (AppDelegate *)[[UIApplication sharedApplication] delegate];

if (appDelegate.navigationController.navigationBar.hidden == NO)
{
    [[UIApplication sharedApplication] setStatusBarHidden:YES animated:YES];
    [appDelegate.navigationController setNavigationBarHidden:YES animated:YES];

    [UIView beginAnimations:@"HideTabbar" context:nil];
    [UIView setAnimationDuration:.2];
    self.view.frame = CGRectMake(0,0,320,480);
    [UIView commitAnimations];
}
if (appDelegate.navigationController.navigationBar.hidden == YES)
{
    [[UIApplication sharedApplication] setStatusBarHidden:NO animated:YES];
    [appDelegate.navigationController setNavigationBarHidden:NO animated:YES];

    [UIView beginAnimations:@"ShowTabbar" context:nil];
    [UIView setAnimationDuration:.2];
    self.view.frame = CGRectMake(0,0,320,368);
    [UIView commitAnimations];
}   
}

Ответ 2

Есть встроенный способ сделать это:

self.hidesBottomBarWhenPushed = YES;

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

ChildViewController* childVC = [[ChildViewController alloc] init];
childVC.hidesBottomBarWhenPushed = YES;
[self.navigationController pushViewController:childVC animated:YES];
[childVC release];

Ответ 3

Мое решение:

// Hide tab bar animated
CATransition *animation = [CATransition animation];
[animation setType:kCATransitionFade];
[[self.view.window layer] addAnimation:animation forKey:@"layerAnimation"]; 
[self.tabBarController.tabBar setHidden:YES];

// Display tab bar animated
CATransition *animation = [CATransition animation];
[animation setType:kCATransitionFade];
[[self.view.window layer] addAnimation:animation forKey:@"layerAnimation"]; 
[self.tabBarController.tabBar setHidden:NO];

Вам нужно добавить #import <QuartzCore/QuartzCore.h>

Ответ 4

Я нашел один ответ на этот вопрос, очень простой и эффективный.

Решение состоит в том, чтобы установить опцию "Скрыть нижнюю панель при нажатии" во ВСЕХ ПРОСМОТРАХ, ПРОСМОТРАХ КОНТРОЛЛЕРОВ и TAB BAR CONTROLLERS вашего приложения.

Вы можете сделать это в IB или по коду в любом случае.

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

Ответ 5

Чтобы настроить размер вашего окна, сначала нужно выбрать опцию NONE в поле строки состояния под вкладкой "Атрибуты" окна "Инспектор". Интерфейс Builder позволит вам изменить размер вашего окна.

Ответ 6

В случае, если кому-то нужна версия MonoTouch, этот классный маленький трюк. (спасибо!)

    // Method implementations
    static void hideTabBar (UITabBarController tabbarcontroller)
    {
        UIView.Animate(0.4, delegate() { 
            foreach(UIView view in tabbarcontroller.View.Subviews)
            {
                if(view.GetType()==typeof(UITabBar))
                    view.Frame=new  RectangleF(view.Frame.X, 480, view.Frame.Size.Width, view.Frame.Size.Height);
                else 
                    view.Frame=new  RectangleF(view.Frame.X, view.Frame.Y, view.Frame.Size.Width, 480);
            }
        });
    }

    static void showTabBar (UITabBarController tabbarcontroller)
    {
        UIView.Animate(0.4, delegate() { 
            foreach(UIView view in tabbarcontroller.View.Subviews)
            {
                if(view.GetType()==typeof(UITabBar))
                    view.Frame=new  RectangleF(view.Frame.X, 367, view.Frame.Size.Width, view.Frame.Size.Height);
                else 
                    view.Frame=new  RectangleF(view.Frame.X, view.Frame.Y, view.Frame.Size.Width, 367);
            }
        });
    }