Сховати панель вкладок у швидкій програмі IOS


91

Я намагаюся зрозуміти, як приховати панель вкладок у моєму швидкому додатку iOS. Мене не хвилює якась вигадана анімація чи щось інше. Просто те, що я можу помістити у функцію ViewDidLoad ().


Встановіть це перед натисканням на ВК. vc.hidesBottomBarWhenPushed = trueповинні виконати роботу. НЕ показуйте та не приховуйте панель вкладок вручну.
абхімуралідахаран

Відповіді:


213

Ви можете просто використовувати це у своєму ViewDidLoad()методі.

self.tabBarController?.tabBar.hidden = true

Для Swift 3.0, 4.0, 5.0 :

self.tabBarController?.tabBar.isHidden = true

Або ви можете змінити положення z на панелі вкладок таким чином:

self.tabBarController?.tabBar.layer.zPosition = -1

і якщо ви хочете показати це знову, тоді:

self.tabBarController?.tabBar.layer.zPosition = 0

14
Дхармеш, дякую за відповідь. Це успішно приховує панель вкладок, але тоді подання таблиці не заповнює екран. Це просто чорний колір, де повинна бути панель вкладок. Думаю, є ще один крок, щоб він відповідав екрану?
Роберт

3
Додайте для цього обмеження.
Dharmesh Kheni

2
Які "обмеження" слід додати?
db0

Якщо ви використовували обмеження, ви можете змінити обмеження висоти для цього або змінити фрейм tableView. @ db0
Дхармеш Кені

5
Але панель вкладок все одно сприймає дотик, спробуйте натиснути біля будь-якої вкладки невидимої панелі вкладок. @DharmeshKheni
C

140

Прийнята відповідь працює, але перехід до іншого подання має похитну анімацію (анімація панелі вкладки)

Також хотів додати, хоча рішення Калпеша для мене спрацювало ідеально, я з’ясував, що кожен контролер подання має атрибут hidesBottomBarWhenPushed (ознайомтесь із розкадровкою.) Якщо ви хочете приховати панель вкладок, вам слід поставити галочку на цьому. І це було б чудово.

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

Оновлення: Я не впевнений, що це відома річ, але ось що сказано на сторінці документації до Apple:

Контролер перегляду, доданий як дочірній елемент навігаційного контролера, може відображати додаткову панель інструментів внизу екрана. Значення цієї властивості на верхньому контролері перегляду визначає, чи буде видима панель інструментів. Якщо значення цієї властивості істинне, панель інструментів прихована. Якщо значення цієї властивості хибне, смугу видно.

Я думаю, це означає, що вам потрібно встановити основне значення hidesBottomBarWhenPushed на верхньому контролері перегляду (першому в стеці навігації.) Після того, як ви встановите це значення true, ви можете змінити значення false або true для інших контролерів огляду на стек. Але якщо значення hidesBottomBarWhenPushed вашого найвищого контролера подання хибне, воно не відображатиме панель вкладок для інших контролерів у стеці навігації.


2
ось що ми повинні робити. Набагато краще за інші відповіді, якщо ви просто хочете приховати це, поки ви представляєте ViewController
Габріель

чому це не працює в Swift 4 ?? Я вже позначив цю опцію, але вона все одно з'являється, коли я переходжу до цього конкретного контролера перегляду
ken

Це також приховує панель вкладок для будь-яких контролерів перегляду, які додаються до стеку після цього. Чи є спосіб повернути його для наступних контролерів перегляду?
Джастін Валлелі

@JustinVallely Будь ласка, дайте мені знати, чи оновлення працює у відповіді
Акшанш Тхакур,

1
Дякую, прийнята відповідь мала для мене проблему, коли я повертаюся до подання, з якого я виходив, вкладка для цього також була знищена!
Abed Naseri,

79

Перед натисканням встановіть controller.hidesBottomBarWhenPushed = true

let objCreateEventVC = CreateEventVC()
objCreateEventVC.hidesBottomBarWhenPushed = true
self.navigationController?.pushViewController(objCreateEventVC, animated: false)

Не працює при додаванні групи контролерів за допомогоюsetViewControllers
KR

27

Не потрібно встановлювати властивість isBidden вкладки tabBar.

Просто перейдіть до ViewController (у StoryBoard) -> Інспектор атрибутів -> У розділі «Перегляд контролера» встановіть прапорець «Сховати нижню панель при натисканні». Це працює як шарм.

Якщо ви рухаєтесь по шляху 'isHidden', вам потрібно зробити багато обробки, тобто зробити це знову, коли ви повернетесь назад, а також видалити нижній порожній простір після приховування tabBar.


3
Це має бути фактичною відповіддю. Це дозволило мені встановити обмеження для моїх елементів інтерфейсу без зайвих клопотів.
Картік Каннан

2
Hide Bottom Bar on Pushмає неприємну анімацію, imo.
Теодор Сіурару

Повернувшись із цієї сторінки, вкладка трохи застигає і повертається. Як ви вважаєте, в чому причина?
Yunus T.


3

Ви також можете встановити його в розширенні (використовуйте відповідь Dharmesh Kheni)

extension UITabBar {
func tabsVisiblty(_ isVisiblty: Bool = true){
    if isVisiblty {
        self.isHidden = false
        self.layer.zPosition = 0
    } else {
        self.isHidden = true
        self.layer.zPosition = -1
    }
}

2

Це програмний спосіб для Swift 4.0, 4.1, 4.2, 5.0 та пізніших >:

tabBarController?.hidesBottomBarWhenPushed = true

або

hidesBottomBarWhenPushed = true

@NicoS. Правда. Де у питанні / відповіді ви щось читаєте про панель інструментів?
J. Doe,

З документації: Логічне значення, яке вказує, чи прихована панель інструментів у нижній частині екрана, коли контролер подання подається на контролер навігації.
Ніко С.

1
Питання про TabBar, а не ToolBar
Ніко С.

@NicoS. те саме в цій ситуації ... ха-ха. Очевидно, ви навіть не потрудились спробувати.
J. Doe,

1
перший не працює, другий слід додати під час виконання сеги або перед натисканням на контролер перегляду.
Гал Шахар

1

Щоб приховати панель навігації та панель вкладок, я використовую наступну функцію:

var tabBarHeight : CGFloat!

func fullScreenAction(){
    if navigationController?.isNavigationBarHidden ?? false {
        //Show navigationBar
        navigationController?.setNavigationBarHidden(false, animated: false)

        //Show tabBar
        tabBarController?.tabBar.isHidden = false
        //Update the height of tabBar
        if (!(tabBarController?.tabBar.frame.size.height.isEqual(to: 0))!) {
            tabBarHeight = self.tabBarController?.tabBar.frame.size.height
        }
        tabBarController?.tabBar.frame.size.height   = tabBarHeight
    } else {
        //Hide navigationBar
        navigationController?.setNavigationBarHidden(true, animated: false)

        //Hide tabBar
        tabBarController?.tabBar.isHidden = true
        //Update the height of tabBar
        tabBarHeight = tabBarController?.tabBar.frame.size.height
        tabBarController?.tabBar.frame.size.height   = 0

    }

}

Коли орієнтація екрана змінила і висоту вкладки, зміниться також, тому я використовую наступну функцію для виходу з повноекранного режиму, щоб змінити висоту:

override func viewWillTransition(to size: CGSize, with coordinator: UIViewControllerTransitionCoordinator) {
    super.viewWillTransition(to: size, with: coordinator)
    if navigationController?.isNavigationBarHidden ?? false {
        navigationController?.setNavigationBarHidden(false, animated: false)
        tabBarController?.tabBar.isHidden = false
    }
}

Сподіваюся, це буде корисно для вас.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.