programing

IOS swift 앱에서 탭 모음 숨기기

codeshow 2023. 8. 20. 12:58
반응형

IOS swift 앱에서 탭 모음 숨기기

iOS swift 앱에서 탭바를 숨기는 방법을 찾고 있습니다.저는 화려한 애니메이션이나 그 어떤 것도 신경 쓰지 않습니다.ViewDidLoad() 기능에 넣을 수 있는 것입니다.

당신은 이것을 당신의 웹사이트에서 사용할수 있습니다.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

허용된 답변은 작동하지만 다른 보기로 전환하는 경우 애니메이션이 끊깁니다(탭 바 애니메이션).

또한 Kalpesh의 솔루션이 저에게 완벽하게 작동했지만 모든 뷰 컨트롤러에 hidesBottomBar 속성이 있다는 것을 발견했습니다.푸시할 때(스토리보드를 확인하십시오.탭 표시줄을 숨기려면 해당 탭에 체크 표시를 해야 합니다.그리고 그것은 아주 잘 될 겁니다.

enter image description here

업데이트: 이것이 알려진 것인지 확실하지 않지만 애플 설명서 페이지에는 다음과 같은 내용이 있습니다.

탐색 컨트롤러의 하위로 추가된 보기 컨트롤러는 화면 하단에 선택적 도구 모음을 표시할 수 있습니다.맨 위 뷰 컨트롤러의 이 속성 값에 따라 도구 모음을 볼 수 있는지 여부가 결정됩니다.이 속성 값이 참이면 도구 모음이 숨겨집니다.이 속성 값이 거짓이면 막대가 표시됩니다.

이것은 당신이 hides BottomBar의 기본값을 설정해야 한다는 것을 의미한다고 생각합니다.맨 위 보기 컨트롤러(내비게이션 스택의 첫 번째 컨트롤러)에서 푸시할 때.이 값을 true로 설정하면 스택의 다른 뷰 컨트롤러에 대해 false 또는 true로 변경할 수 있습니다.그러나 맨 위 보기 컨트롤러가 맨 아래 막대를 숨긴 경우Pushed 값이 false이면 탐색 스택의 다른 컨트롤러에 대한 탭 모음이 표시되지 않습니다.

푸시 세트 컨트롤러 이전.아래쪽 막대 숨기기= true를 누를 때

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

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

간단히 ViewController(StoryBoard)로 이동하여(StoryBoard) -> 속성 검사기 -> 'ViewController' 섹션에서 'Hide Bottom Bar on Push' 확인란을 선택합니다.이것은 매력적으로 작동합니다.

'isHidden(숨김)' 방식으로 가면 많은 처리가 필요합니다. 즉, 돌아갈 때 다시 표시되도록 하고 탭Bar를 숨긴 후 아래쪽 빈 공간을 제거합니다.

애니메이션이 있는 탭 모음 숨기기 및 표시

애니메이션이 포함된 탭 모음을 숨기거나 표시하려는 사용자용입니다.

이후로을 위한 이 바뀌었습니다.OS 13 이후, 애니메이션에 대한 UI 탭바의 동작이 변경되었습니다.은 더 더이사수없다를 사용할 수 .CGAffineTransform대신 프레임 위치를 애니메이션으로 만들어야 합니다.

여기에서 전체 가이드 보기: 애니메이션이 포함된 모음 숨기기 및 표시

탭 표시줄 숨기기

UIView.animate(withDuration: 0.7, delay: 0, usingSpringWithDamping: 0.8, initialSpringVelocity: 0.7, options: .curveEaseOut) {
    if let tabBarFrame = self.tabBarController?.tabBar.frame {
        self.tabBarController?.tabBar.frame.origin.y = navigationController.view.frame.maxY + tabBarFrame.height
    }
    navigationController.view.layoutIfNeeded()
} completion: { _ in
    self.tabBarController?.tabBar.isHidden = true
}

탭 표시줄을 표시하는 방법

UIView.animate(withDuration: 0.7, delay: 0, usingSpringWithDamping: 0.8, initialSpringVelocity: 0.7, options: .curveEaseOut) {
    if let tabBarFrame = self.tabBarController?.tabBar.frame {
        self.tabBarController?.tabBar.frame.origin.y = navigationController.view.frame.maxY - tabBarFrame.height
    }
    navigationController.view.layoutIfNeeded()
}

꼭전세요로 하세요.layoutIfNeeded()에의 에.UIView.animate애니메이션으로 변경을 트리거합니다.

스위프트 3.

self.tabBarController?.tabBar.isHidden = true

이것이 Swift 4.0, 4.1, 4.2, 5.0 이상 버전의 프로그래밍 방식 >:

tabBarController?.hidesBottomBarWhenPushed = true

또는

hidesBottomBarWhenPushed = true

확장으로 설정할 수도 있습니다(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
    }
}

여기 제 코드가 있습니다.탭바를 숨기기 위한 것입니다.(잘 설정된 프레임이 없을 경우 하단에 검은색 뷰가 표시됩니다.)

var oldTabbarFr: CGRect = .zero

override func viewDidLoad() {
    super.viewDidLoad()
    // Do any additional setup after loading the view.
    oldTabbarFr = self.tabBarController?.tabBar.frame ?? .zero
}

override func viewWillAppear(_ animated: Bool) {
    super.viewWillAppear(animated)
    self.tabBarController?.tabBar.isHidden = true
    self.tabBarController?.tabBar.frame = .zero
}

override func viewWillDisappear(_ animated: Bool) {
    super.viewWillDisappear(animated)
    self.tabBarController?.tabBar.isHidden = false
    self.tabBarController?.tabBar.frame = oldTabbarFr
}

탐색 모음과 탭 모음을 숨기려면 다음 기능을 사용합니다.

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

나는 그것이 당신에게 유용하기를 바랍니다.

언급URL : https://stackoverflow.com/questions/28777943/hide-tab-bar-in-ios-swift-app

반응형