본문 바로가기
공부/Apple

[UIKit] navigationbar 숨기기와 보이기

by 초코팅촉 2024. 9. 24.
728x90
반응형

이번시간에는 navigationbar를 자유자재로 각 뷰마다 보이거나 숨기도록 하는 방법을 알아봅시다.

깃허브 링크에 들어가보시면 아래앱의 전체 코드가 있습니다.

위 이미지에 보시다싶이 제 앱에선 상단의 navigationbar가 항상 존재하지않습니다.

메인화면에선 없구요, 항상 어딘가를 들어가야(뎁스가 늘어나야) 존재하게 됩니다.

이렇게 navigationbar를 숨기거나 나타내는 방법에는 두가지가 있습니다.

 

setNavigationBarHidden(_:animated:)

첫번째 파라미터는 숨김여부 bool,

두번째 파라미터는 애니메이션여부 bool입니다.

파라미터에서부터 보면 알수있죠?

animated를 통해서 애니메이션 여부를 결정할 수 있습니다.

사용방법은 아래와 같습니다.

func 어떤 메서드() {
	// 애니메이션과 함께 없애기
	navigationController?.setNavigationBarHidden(true, animated: true)
    
    // 애니메이션 없이 나타내기
	navigationController?.setNavigationBarHidden(false, animated: false)

}

 

현재뷰는 내비바가 없으나 다음 뷰로 넘어갈 때, 다음뷰에서는 내비바가 존재해야하는 경우에 주로 사용합니다.

 

isNavigationBarHidden

이 친구는 navigationController의 bool형 프로퍼티인데요, 따로 애니메이션을 바로 추가할 수 없이 그냥 설정됩니다.

사용방법은 아래와 같습니다.

func 어떤 메서드() {
	navigationController?.isNavigationBarHidden = false // 나타내기
	navigationController?.isNavigationBarHidden = true // 숨기기
}

제가 했던것처럼 특정 뷰의 내비바를 아예 없는상태로 만들어버릴때 유용할 것 같습니다.

 

아래의 글을 참고하였습니다.

https://velog.io/@ryan-son/Swift-특정-View-Controller에서-Navigation-Bar-숨기기

 

[Swift] 특정 View Controller에서 Navigation Bar 숨기기 (메서드와 프로퍼티 비교)

특정 화면에서는 Navigation Bar가 보이지 않게끔 설정해야할 때, 어떻게 해야할까요?

velog.io

 

728x90
반응형

'공부 > Apple' 카테고리의 다른 글

[Swift] frame과 bounds  (0) 2024.10.19
[Swift] viewWillLayoutSubviews(), viewDidLayoutSubviews()  (0) 2024.09.23
[Swift] Update Cycle  (0) 2024.09.22
[UIKit] 다크모드, 라이트 모드 고정  (0) 2024.09.01
[UIKit] UITextView placeholder  (0) 2024.08.13