Как скрыть контроллер панели вкладок? - PullRequest
22 голосов
/ 19 сентября 2011

Как скрыть панель вкладок контроллера?Я хочу скрыть контроллер панели вкладок двойным нажатием на UIImageView.

Ответы [ 9 ]

34 голосов
/ 19 сентября 2011

Попробуйте этот код:

[self.tabBarController.tabBar setHidden:YES];

, где необходимо определить tabbarcontroller ...

РЕДАКТИРОВАТЬ

AppDelegateFileName *appDelegate = (AppDelegateFileName *) [[UIApplication sharedApplication] delegate];
[appDelegate.tabbarController.tabBar setHidden:YES];

перед выполнениемубедитесь, что вы создали @property объявление tabbarController в файле appDelegate .h.

11 голосов
/ 15 апреля 2015

При использовании раскадровок вы можете просто снять флажок в Инспекторе атрибутов вашего ViewController.Это называется «Скрыть нижний бар на толчке».Действительно очень удобно, и нет необходимости снова обрабатывать отображение tabBar после перехода назад из вашего viewBontroller без tabbar.Я не знаю, в какой XCode-версии это было представлено, но оно есть для XCode 6+.

5 голосов
/ 19 сентября 2011

Используйте TapGesture Recognizer для обнаружения двойных нажатий на UIIMageview. Затем вызовите метод обнаружения двойного двойного касания. Добавьте следующую строку кода в этот метод.

self.tabBarController.tabBar.hidden=YES;

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

4 голосов
/ 19 сентября 2011

Используйте код ниже, чтобы скрыть / показать контроллер панели вкладок в анимированном стиле.
hiddenTabBar является переменной BOOL.

- (void) hidetabbar {

    [UIView beginAnimations:nil context:NULL];
    [UIView setAnimationDuration:0.0];

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

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

            if (hiddenTabBar) {
                [view setFrame:CGRectMake(view.frame.origin.x, 431, view.frame.size.width, view.frame.size.height)];
            } else {
                [view setFrame:CGRectMake(view.frame.origin.x, 480, view.frame.size.width, view.frame.size.height)];
            }
        } else {
            if (hiddenTabBar) {
                [view setFrame:CGRectMake(view.frame.origin.x, view.frame.origin.y, view.frame.size.width, 431)];
            } else {
                [view setFrame:CGRectMake(view.frame.origin.x, view.frame.origin.y, view.frame.size.width, 480)];
            }

        }
    }

    [UIView commitAnimations];

    hiddenTabBar = !hiddenTabBar;
}
1 голос
/ 30 апреля 2018

Если вы хотите изменить анимацию, вы можете использовать этот код:

extension UITabBarController {

func set(visible: Bool, animated: Bool, completion: ((Bool)->Void)? = nil ) {

    guard isVisible() != visible else {
        completion?(true)
        return
    }

    let offsetY = tabBar.frame.size.height
    let duration = (animated ? 0.3 : 0.0)

    let beginTransform:CGAffineTransform
    let endTransform:CGAffineTransform

    if visible {
        beginTransform = CGAffineTransform(translationX: 0, y: offsetY)
        endTransform = CGAffineTransform.identity
    } else {
        beginTransform = CGAffineTransform.identity
        endTransform = CGAffineTransform(translationX: 0, y: offsetY)
    }

    tabBar.transform = beginTransform
    if visible {
        tabBar.isHidden = false
    }

    UIView.animate(withDuration: duration, animations: {
        self.tabBar.transform = endTransform
    }, completion: { compete in
        completion?(compete)
        if !visible {
            self.tabBar.isHidden = true
        }
    })
}

func isVisible() -> Bool {
    return !tabBar.isHidden
}
}

Больше вы можете прочитать в https://stackoverflow.com/a/50101262/1797194

1 голос
/ 08 марта 2016

Swift 2.1:

self.tabBarController!.tabBar.hidden = true
1 голос
/ 25 сентября 2012

UIViewController имеет свойство

@property(nonatomic, readonly, retain) UITabBarController *tabBarController

, который вы можете установить:

self.tabBarController.tabBar.hidden = YES;
0 голосов
/ 22 января 2018

Objective-C

[self.tabBarController.tabBar setHidden:YES];

Свифт 3

self.tabBarController?.tabBar.isHidden = true

Swift 2

self.tabBarController?.tabBar.hidden = true
0 голосов
/ 19 сентября 2011

Попробуйте, когда вы перемещаете представление в новое представление:

self.tabbarconroller.tabbar.hidden = YES;
...