IOS/UIKit

[UIKit] UINavigationBar

민몬+ 2021. 10. 24. 05:13

Overview


Navigation Bar는 화면의 꼭대기에 표시되며 화면의 탐색(Navigation)을 표현하는 객체이다.

주로 아래와 같이 Left Button, Title, Right Button으로 구성된다.

Navigation Bar는 단일 객체로 사용하거나, Navigation Controller와 함께 사용한다. 

 

UINavigationBarAppearance


Navigation Bar의 외형을 수정하는 객체이며 UIBarAppearance의 SubClass이다.

UINavigationBar 내의 item들의 외형을 변경하거나 Navigation Bar의 배경, 그림자 등을 설정한다.

NavigationBar의 UINavigationBarAppearance 프로퍼티는 아래와 같이 세가지가 존재한다.

  • standardAppearance
    System의 Default Appearance를 포함하는 Appearance 객체이다.
  • scrollEdgeAppearance
    Scroll이 가능한 Content의 Scroll이 Navigation Bar와 맞 닿을때 사용되는 Appearance 객체이다.
    # IOS15 이전에는 LargeTitle에만 적용되었지만 IOS15부터는 모든 Navigation Bar에 적용된다.
  • compactAppearance
    Compact한 높이의 Navigation Bar에 적용되는 Appearance
  •  

UINavigationItem


현재 표시되는 View Controller의 navigation Bar에 표시되는 Item이다.

UINavigationController에 Push 되는 ViewController는 모두 UINavigationItem을 가져야 한다.

NavigationBar의 View에 SubView를 직접 추가해선 안되며, UINavigationItem 객체를 사용해야 한다.

 

UINavigationBar는 UINavigationItem의 Stack을 가진다.

NavigationBar의 Stack에 NavigationItem을 Push 할 때 해당 NavigationItem이 표시된다.

NavigationBar의 Stack에 NavigationItem을 Pop할 때 해당 NavigationItem은 사라지며 그 아래의 Item이 보이게 된다.

 

Navigation Item은 Title, Left, Right View, Button 등으로 구성되며

Navigation Item을 위한 Button을 지정할 경우 반드시 UIBarButtonItem 객체를 사용해야 한다.

Navigation Item의 BackBarButtonItem 프로퍼티는

현재 ViewController가 Stack의 Top ViewController일 경우 보이지 않는다.

 

With Navigation Controller


대부분의 경우 Navigation Bar는 Navigation Controller와 함께 사용한다.

Navigation Controller는 NavigationBar 객체를 가지며 Navigation Bar는 UINavigationItem Stack을 가진다.

 

Navigation Controller는 Child View Controller를 Push/Pop할 때

Child View Controller의 UINavigationItem 또한 Navigation Bar의 Stack에 Push/Pop 한다.

Navigation Controller는 ViewController의 Title을 Default Navigation Item으로 사용한다.

 

Navigation Controller는 NavigationBar의 Delegate 객체로 자신을 등록한다.

따라서 Navigation Controller를 사용한다면 delegate 프로퍼티를 따로 수정해선 안 된다.

delegate객체는 UINavigationBarDelegate Protocol을 준수한다.

delegate 객체는 Stack으로부터 NavigationItem이 Push/Pop 될 때 NavigationBar의 View를 업데이트하기 위해 사용된다.

 

현재 Navigation Item을 Stack에서 Push/Pop 할지 여부를 결정할 수 있고

Navigation Item이 Push/Pop 되었을 때 알림을 받을 수 있다.

 

 

Reference


https://developer.apple.com/documentation/uikit/uinavigationcontroller

 

Apple Developer Documentation

 

developer.apple.com

https://developer.apple.com/documentation/uikit/uinavigationbar

 

Apple Developer Documentation

 

developer.apple.com

https://developer.apple.com/documentation/uikit/uinavigationcontroller/customizing_your_app_s_navigation_bar

 

Apple Developer Documentation

 

developer.apple.com

 

'IOS > UIKit' 카테고리의 다른 글

[UIKit] UINavigation Controller  (0) 2021.10.23
[UIKit] App's Life Cycle  (0) 2021.10.13
[UIKit] UIApplication  (0) 2021.10.08