IOS Swift 앱에서 탭 표시 줄 숨기기


91

iOS 빠른 앱에서 탭 표시 줄을 숨기는 방법을 알아 내려고합니다. 나는 멋진 애니메이션이나 그 어떤 것도 신경 쓰지 않는다. ViewDidLoad () 함수에 넣을 수있는 것입니다.


VC를 누르기 전에 이것을 설정하십시오. vc.hidesBottomBarWhenPushed = true일을해야합니다. 탭 바를 수동으로 표시하거나 숨기지 마십시오.
abhimuralidharan

답변:


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
Dharmesh, 답장 주셔서 감사합니다. 이렇게하면 탭 표시 줄이 성공적으로 숨겨 지지만 테이블보기가 화면을 채우지 않습니다. 탭 바가 있어야하는 곳은 검은 색입니다. 화면에 맞추기위한 또 다른 단계가 있을까요?
Robert

3
그것에 대한 제약을 추가하십시오.
Dharmesh Kheni 2015

2
추가 할 "제약 조건"은 무엇입니까?
db0

제약 조건을 사용했다면 높이 제약 조건을 변경하거나 tableView의 프레임을 변경할 수 있습니다. @ db0
Dharmesh Kheni 2016 년

5
그러나 탭 바는 여전히 터치를 할 것이므로 보이지 않는 탭 바의 탭 근처를 탭해보십시오. @DharmeshKheni
Shobhit C

140

수락 된 답변은 작동하지만 다른보기로 전환하면 애니메이션이 고르지 않습니다 (탭 막대 애니메이션).

또한 Kalpesh의 솔루션이 저에게 완벽하게 작동했지만 추가하고 싶었지만 모든 뷰 컨트롤러에는 hidesBottomBarWhenPushed에 대한 속성이 있다는 것을 알았습니다 (스토리 보드를 확인하십시오.). 탭 바를 숨기려면 체크 표시를해야합니다. 그리고 그것은 잘 작동 할 것입니다.

여기에 이미지 설명 입력

업데이트 : 이것이 알려진 것인지 확실하지 않지만 다음은 사과 문서 페이지에 나와있는 내용입니다.

탐색 컨트롤러의 자식으로 추가 된보기 컨트롤러는 화면 하단에 선택적 도구 모음을 표시 할 수 있습니다. 최상위 뷰 컨트롤러의이 속성 값은 도구 모음이 표시되는지 여부를 결정합니다. 이 속성 값이 true이면 도구 모음이 숨겨집니다. 이 속성 값이 false이면 막대가 표시됩니다.

이것은 최상위 뷰 컨트롤러 (내비게이션 스택의 첫 번째 컨트롤러)에서 hidesBottomBarWhenPushed의 기본 값을 설정해야 함을 의미한다고 생각합니다. true로 설정하면 다른 뷰 컨트롤러에 대해 false 또는 true로 변경할 수 있습니다. 스택. 그러나 최상위 뷰 컨트롤러의 hidesBottomBarWhenPushed 값이 false이면 탐색 스택의 다른 컨트롤러에 대한 탭 모음이 표시되지 않습니다.


2
그게 우리가해야 할 일입니다. 훨씬 더 다른 답변보다 더 당신은 당신이의 ViewController 제시하면서 그것을 숨기려면
가브리엘 Goncalves은

왜 이것이 Swift 4에서 작동하지 않습니까 ?? 이미 옵션을 선택했지만 특정 뷰 컨트롤러로 이동할 때 여전히 나타납니다.
ken

또한 이후 스택에 추가되는 모든 뷰 컨트롤러의 탭 표시 줄을 숨 깁니다. 후속 뷰 컨트롤러를 위해 다시 가져올 수있는 방법이 있습니까?
Justin Vallely

업데이트는이 질문에 대해 작동하는 경우 @JustinVallely 알려 주시기 바랍니다
Akshansh 딴

1
감사합니다. 받아 들여지는 대답은 나에게 문제가있었습니다. 내가 오는보기로 돌아갈 때 Tabbar도 사라졌습니다!
Abed Naseri

79

푸시하기 전에 controller.hidesBottomBarWhenPushed = true 설정

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

컨트롤러를 여러 개 추가 할 때 작동하지 않음setViewControllers
KR

27

tabBar의 isHidden 속성을 설정할 필요가 없습니다.

간단히 ViewController (StoryBoard에서)-> Attribute inspector-> 'View Controller'섹션에서 'Hide Bottom Bar on Push'체크 박스를 선택하세요. 이것은 매력처럼 작동합니다.

'isHidden'방식으로 가면 많은 처리를해야합니다. 즉, 돌아갈 때 다시 나타나게하고 tabBar를 숨긴 후 하단의 빈 공간을 제거해야합니다.


3
이것이 실제 답이되어야합니다. 이를 통해 번거 로움없이 UI 요소에 대한 제약 조건을 설정할 수있었습니다.
Karthik Kannan

2
Hide Bottom Bar on Push불쾌한 애니메이션이 있습니다, imo.
Teodor Ciuraru

이 페이지에서 돌아 오면 Tabbar가 약간 얼었 다가 돌아옵니다. 그 이유가 무엇이라고 생각하십니까?
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

문서에서 : 뷰 컨트롤러를 탐색 컨트롤러에 눌렀을 때 화면 하단의 도구 모음이 숨겨져 있는지 여부를 나타내는 부울 값입니다.
Nico S.

1
문제는 TabBar의없는 도구 모음에 관한 것입니다
니코 S.

@NicoS. 이 상황에서도 똑같아요 ... ㅋㅋ 분명히 당신은 그것을 시도하는 것을 귀찮게하지 않았습니다.
J. Doe

1
첫 번째는 작동하지 않고, 두 번째는 segue를 수행 할 때 또는 뷰 컨트롤러를 누르기 전에 추가해야합니다.
Gal Shahar

1

navigationBar와 tabBar를 숨기려면 다음 함수를 사용합니다.

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

    }

}

화면 방향이 tabBar의 높이를 변경하면 높이를 조정하기 위해 다음 함수를 사용하여 전체 화면을 종료합니다.

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
    }
}

도움이 되었기를 바랍니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.