[iOS]UITabBarController와 UITabBar

iOS개발 공부를 하며 배운것들을 정리한 글입니다.
오류나 오타가 있다면 언제든 알려주시기 바랍니다 :)
환경은 Swift4 + Xcode 9.0 기반입니다.


앱을 개발할때 흔히 쓰이는 View Controller로 Tab이 있습니다.
여러 화면들을 Tab을 통해 전환하면서 다른 카테고리의 화면을 보여주는 방식에 주로 사용됩니다.
이해가 잘 안되는 분들은 아래 사진을 확인해보시기 바랍니다.

위 사진은 아이폰에 기본적으로 내장되어 있는 시계(Clock)앱 입니다.
화면의 아래쪽에 있는 Tab이 변경되면서 다른 화면을 보여주는 것을 확인할 수 있습니다.
이처럼 같은 앱이지만 다루는 주제가 화면마다 확연한 차이가 있는 경우이거나 같은 주제지만 인터페이스가 확연히 다른 경우에는 Tab 방식을 활용하는 것이 좋습니다.

이번 글에서는 이 Tab방식으로 앱을 개발하기 위해 필요한 클래스들에 대해 알아보려고 합니다.

UITabBarController

A container view controller that manages a radio-style selection interface, where the selection determines which child view controller to display.

위에 있는 설명을 살펴보면, UITabBarController의 핵심은 radio-style interface를 관리한다는 부분입니다.
radio-style이란 우리가 여러가지 선택할 수 있는 보기가 있을때 보기 중 하나만 선택할 수 있는 경우에 사용하는 방식입니다.
간단히 말하면 여러 하위 View Controller를 포함하고 있는 Container지만 선택권을 사용자들에게 넘겨 사용자들이 원하는 한가지 하위 View만을 보여주는 방식이라고 할 수 있습니다.
iOS만의 한가지 특이한 점으로는 UITabBarController를 사용한다면 Tab이 항상 화면 최하위에 위치 한다는 점입니다. 아마 한 손으로 사용하는 기기를 다루면서 편리하게 엄지손가락에 위치할 수 있도록 위치를 강제로 통일하는 것 같습니다.

TabBarController는 UIViewController를 상속받기 때문에 컨트롤러 자체가 내부 뷰 속성에 접근할 수 있는 하나의 뷰를 가지고 있습니다. 따라서 TabBarItem을 품고 있는 TabBar라는 뷰를 품고 있기에 각 탭별로 화면전환이 가능합니다.
아래 그림은 TabBarController가 어떤식으로 구성되어 있는지 잘 나타내 줍니다.

헷갈릴 수 있으니 위 그림에서 Navigation View 는 제외하고 생각해도 됩니다. 중요한 것은 각 View에 Layer가 있어서 구분되며, TabBar View를 통해 Tab을 선택한다면 위에서 여러 겹쳐져 있는 화면 중에 오직 가장 최상단에 올라와 있는 Custom View부분만 변경되면서 현재 어떤 Tab이 선택되었는지를 나타낸다는 것입니다.

UITabBar

A control that displays one or more buttons in a tab bar for selecting between different subtasks, views, or modes in an app.

위의 그림에서 확인되는 TabBar View에 해당하는 부분이며 UIView로, 사용자에게 탭들을 어떻게 보여주고 탭 클릭 시 어떻게 반응할 건지 (피드백을 어떻게 보여줄지) 알고 있습니다.
UITabBar는 보통 UITabBarController와 함께 사용하지만 혼자 쓰일 수도 있으며, 각 탭을 구분하는 버튼을 포함하고 있습니다. 각각의 버튼은 탭의 종류를 뜻하며 item이라고 합니다. TabBarItem은 TabBar에 최소 1개 이상입니다.
특이점은 종류가 6가지가 넘어간다면 처음 4가지만 표시되고 나머지는 the standard More item(보통 ∙∙∙) 이라는 버튼으로 표시됩니다.
TabBar의 Item들을 구성할때는 Interface Builder(Storyboard)를 활용하는 방식과 프로그래밍으로 직접 처리하는 방식 두가지가 다른 부분이 있기 때문에 링크(UITabBar)를 확인하시고 필요에 맞게 사용하시면 될 것 같습니다.

UITabBarItem

An item in a tab bar.

TabBarController의 TabBar중 한번에 하나만 선택되는 Radio Mode 각각의 대상이라고 할 수 있습니다.
각 아이템은 Badge를 추가하여 새로운 메시지의 개수를 표시하는 등 커스터마이징해서 원하는 형태로 활용이 가능합니다.

tvOS와의 주요 차이점

  • TabBar의 위치가 하단이 아니고 상단입니다. 또, 포커스가 벗어나면 자동숨김기능이 적용되어 사라집니다. 숨겨진 TabBar는 위쪽으로 swiping 하거나 Menu버튼을 누르면 다시 나타납니다.
  • TabBarController의 Tab이 개수만큼 전부 다 표현되며, iOS에서처럼 More표시로 변경되지 않습니다.

마치며

UITabBarController는 사용빈도가 꽤 높은 ViewController이라고 생각합니다.
따라서 자세히 공부하고 자주 사용해보는 것이 좋을 것 같습니다.

Share 0 Comments