iOS7 не может скрыть панель вкладок, черная полоса

Я хочу скрыть панель вкладок при прокрутке представления коллекции, код

 #pragma mark - UIScrollViewDelegate
- (void)scrollViewWillBeginDecelerating:(UIScrollView *)scrollView
{
    [self makeTabBarHidden:YES];
}

- (void)scrollViewWillBeginDragging:(UIScrollView *)scrollView
{
    [self makeTabBarHidden:NO];
}

- (void)makeTabBarHidden:(BOOL)hide
{
    if ( [self.tabBarController.view.subviews count] < 2 )
    {
        return;
    }
    UIView *contentView;
    UIView *bradeView = [self.tabBarController.view.subviews objectAtIndex:2];

    if ( [[self.tabBarController.view.subviews objectAtIndex:0] 
             isKindOfClass:[UITabBar class]] )
    {
        contentView = [self.tabBarController.view.subviews objectAtIndex:1];
    }
    else
    {
        contentView = [self.tabBarController.view.subviews objectAtIndex:0];
    }
    //    [UIView beginAnimations:@"TabbarHide" context:nil];
    if ( hide )
    {
        contentView.frame = self.tabBarController.view.bounds;
    }
    else
    {
        contentView.frame = CGRectMake(self.tabBarController.view.bounds.origin.x,
                                 self.tabBarController.view.bounds.origin.y,
                                 self.tabBarController.view.bounds.size.width,
                                 self.tabBarController.view.bounds.size.height -
                                    self.tabBarController.tabBar.frame.size.height);
    }

    self.tabBarController.tabBar.hidden = hide;
    bradeView.hidden = hide;
}

но в iOS7, когда панель вкладок скрыта, есть черная полоса, которая не исчезает. Как я могу скрыть панель вкладок в iOS7?

4 ответа

Решение

Использовать этот

-(void)viewWillAppear:(BOOL)animated
    {
        [self.navigationController setNavigationBarHidden:YES animated:animated];
        [self setHidesBottomBarWhenPushed:YES];
        [super viewWillApper:animated];
    }


        enter code here

    -(void)viewWillDisappear:(BOOL)animated
    {
        [self.navigationController setNavigationBarHidden:NO animated:animated];
        [self setHidesBottomBarWhenPushed:NO];
        [super viewWillDisapper:animated];
    }

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

Если ваш бар непрозрачный, выберите также Under Opaque Bars.

ЛУЧШИЙ ОТВЕТ, вызовите следующий метод в viewDidLoad и сделайте то, что рекомендуется @tufyx! Удачи

- (void)hideTabBar:(UITabBarController *)tabbarcontroller
{
    [tabbarcontroller.tabBar setHidden:YES];
    UIView *contentView;
    if ([[self.tableView.subviews objectAtIndex:0] isKindOfClass:[UITabBar class]]) {
        contentView = [self.tableView.subviews objectAtIndex:1];
    } else {
        contentView = [self.tableView.subviews objectAtIndex:0];
    }
    contentView.frame = self.tableView.bounds;
}

Если вы используете segues, как я, вы должны установить свойство контроллера представления перед push. Вот быстрый пример:

override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
    if segue.identifier == "YOUR_SEGUE_NAME" {
        let targetVC = segue.destinationViewController as! YOUR_VIEW_CONTROLLER
        targetVC.hidesBottomBarWhenPushed = true

    }
Другие вопросы по тегам