https://developer.apple.com/documentation/uikit/uitabbar
"A control that displays one or more buttons in a tab bar for selecting between different subtasks, views, or modes in an app."
앱에서 다른 하위작업, 뷰, 모드 사이를 선택할 수 있도록 탭바에 있는 하나 혹은 하나 이상의 버튼을 표시하는 컨트롤입니다.
@MainActor class UITabBar : UIView
보통 UITabBarController
객체와 함께 탭바를 사용할 수 있지만, 앱에서 독립 컨트롤로 탭바를 사용할 수도 있습니다. 탭바는 항상 스크린의 하단 edge에 걸쳐 나타나며, 하나 혹은 하나 이상의 UITabBarItem
객체 컨텐츠를 표시합니다. 탭바의 모양은 원하는 인터페이스 요구사항에 맞출 수 있도록 백그라운드 이미지 혹은 틴트 색상을 통해 커스터마이징될 수 있습니다. 아이템을 탭하는 것은 해당 아이템을 선택하고 강조하며, 앱에서 상응하는 모드를 활성화하기 위해 아이템의 선택을 사용할 수 있습니다.
탭바는 코드 작성 혹은 인터페이스 빌더에서 설정할 수 있습니다. UITabBarController
객체는 자신의 고유한 탭바 객체를 제공하며, 제공된 객체를 설정해줘야 합니다. 탭바를 코드 작성으로 생성하는 경우 init(frame:)
메소드를 사용하거나 다른 뷰 이니셜라이저 메소드를 사용해서 초기 설정을 설정하시기 바랍니다. 탭바의 모양을 설정하기 위해 이 클래스의 메소드를 사용하시기 바랍니다. 직접 생성한 탭바의 경우 탭바에서 표시되는 아이템을 구체화하기 위해 이 클래스의 메소드를 사용해야 합니다.
Note
UITabBar
클래스와UIToolbar
클래스는 유사한 모양을 갖고 있지만 목적이 다릅니다. 앱의 모드를 전달하고 변경하려면 탭바를 사용해야 합니다. 현재 제공된 컨텐트에 관련이 있는 액션의 집합을 사용해서 사용자에게 표시하려면 툴바를 사용하시기 바랍니다. 언제 탭바 및 툴바를 사용하는지에 대한 더 많은 정보는 iOS Human Interface Guidelines를 보시기 바랍니다.
iOS Human Interface Guidelines
https://developer.apple.com/design/human-interface-guidelines/ios/overview/themes/
https://velog.io/@panther222128/iOS
탭바는 딜리게이트 객체로 선택 및 사용자 커스터마이징을 전달합니다. 직접 생성한 탭바의 경우 선택에 응답하거나 추가, 삭제, 탭바에 있는 아이템의 재정렬에 응답하기 위해 딜리게이트를 사용하시기 바랍니다. (UITabBarController
객체는 이 객체가 관리하는 탭바에 대한 딜리게이트 역할을 합니다.) 탭바 딜리게이트를 구현하기 위한 더 많은 정보는 UITabBarDelegate
를 보시기 바랍니다.
인터페이스 빌더를 사용해서 탭바 아이템을 설정할 수 있으며, 코드에서 코드 작성으로 탭바 아이템을 설정할 수도 있습니다. 인터페이스 빌더에 있는 탭바는 몇 가지 초기 아이템으로 사전에 설정된 형태이며, 필요에 따라 아이템을 추가, 삭제, 재정렬할 수 있습니다. 디자인 시점에 아이템을 설정하는 방법은 탭바가 UITabBarController
객체에 연결된 것에 따라 다릅니다.
인터페이스 빌더에서 탭바를 설정하는 경우입니다.
UITabBarController
객체가 제시될 때, 씬에 뷰 컨트롤러를 추가하거나 삭제할 수 있으며, 탭바 컨트롤러와 각각의 새로운 뷰 컨트롤러 사이에서 세그 관계를 생성할 수 있습니다. 세그 관계를 생성하는 것은 탭바에 새 아이템을 자동으로 추가하고, 이미 있었던 세그 관계를 삭제하는 것은 상응하는 탭바 아이템을 제거합니다.코드 작성으로 탭바를 설정하는 경우입니다.
UITabBarController
객체에 연결된 탭바를 설정하려면 탭바 컨트롤러에 연결된 뷰 컨트롤러를 설정해야 합니다. 탭바는 자동으로 탭바 컨트롤러에 연결된 각 뷰 컨트롤러의 tabBarItem
속성으로부터 아이템을 가져옵니다.setItems(_:animated:)
메소드를 사용해야 합니다.탭바는 사용 가능한 공간에 아이템을 어떻게 위치시킬지 결정하기 위해 itemPositioning
속성을 사용하면서, 한 번에 스크린으로 모든 탭을 표시합니다. 사용 가능한 공간에 맞춰질 수 있는 것보다 더 많은 아이템을 갖는 경우 하위집합만을 표시하게 되며, 사용자가 어떤 탭이 표시될지를 선택할 수 있도록 해줍니다. beginCustomizingItems(_:)
메소드는 어떤 탭바 아이템이 표시할지를 선택하기 위한 인터페이스를 표시하도록 합니다.
각 아이템의 컨텐츠는 UITabBarItem
객체에 저장됩니다. 각 아이템은 탭에서 표시하기 위한 제목 및 이미지를 포함합니다. 상응하는 탭에 badge를 추가하기 위해 탭바 아이템을 사용할 수도 있습니다. 아이템 생성 및 설정에 대한 더 많은 정보는 UITabBarItem
을 보시기 바랍니다.
연결된 탭바 컨트롤러를 갖는 탭바의 경우 캡바 컨트롤러는 자동으로 선택을 관리하고 적합한 뷰 컨트롤러를 표시합니다. 직접 선택을 관리해야 하는 시점은 탭바 컨트롤러 없이 탭바를 생성해야 할 때만 그렇습니다. 탭바는 선택 변경사항에 응답하기 위해 사용할 수 있는 딜리게이트 객체의 tabBar(_:didSelect:)
메소드에 선택을 알려줍니다. 딜리게이트 객체를 구현하는 것에 대한 더 많은 정보는 UITabBarDelegate
를 보시기 바랍니다.
UITabBarDelegate
https://developer.apple.com/documentation/uikit/uitabbardelegate
https://velog.io/@panther222128/UITabBarDelegate
Table 1은 인터페이스 빌더에서 탭바에 대해 설정할 수 있는 특성을 리스트로 보여주고 있습니다.
Table 1 Tab bar attributes
Attribute | Discussion |
---|---|
Background | 바에서 표시하기 위한 백그라운드 이미지입니다. 확장 가능한 이미지를 구체화하는 경우 이미지는 사용 가능한 공간에 맞춰질 수 있도록 확정되며, 반대의 경우 이미지는 타일로 나타납니다. 백그라운드 이미지를 설정할 때 탭바는 틴트 색상 정보를 무시합니다. 이 특성을 코드 작성으로 설정하려면 backgroundImage 속성을 사용하시기 바랍니다. |
Shadow | 탭바에 대한 커스텀 그림자 이미지입니다. 이 특성은 탭바가 커스텀 백그라운드를 갖고 있지 않은 경우 무시됩니다. 이 특성을 코드 작성으로 설정하려면 shadowImage 속성을 사용하시기 바랍니다. |
Selection | 선택된 탭에서 사용하기 위한 이미지입니다. 이 특성을 코드 작성으로 설정하려면 selectionIndicatorImage 속성을 사용하시기 바랍니다. |
Image Tint | 선택된 아이템에 적용하기 위한 틴트 색상입니다. 이 특성을 코드 작성으로 설정하려면 tintColor 속성을 사용하시기 바랍니다. |
Style | 바에 적용하기 위한 기본 스타일입니다. 어두운 혹은 밝은 스타일로 탭바를 설정할 수 있으며, 바는 불투명하거나 투명도를 가질 수 있습니다. 스타일을 코드 작성으로 설정하려면 barStyle 및 isTranslucent 속성을 사용하시기 바랍니다. |
Bar Tint | 바에 적용하기 위한 틴트 색상입니다. 이 특성을 코드 작성으로 설정하려면 barTintColor 속성을 사용하시기 바랍니다. |
Item Positioning | 아이템에 적용하기 위한 포지션 스킴입니다. 탭바의 넓이에 걸쳐 아이템이 어떻게 위치할지를 설정하기 위해 이 특성을 사용하시기 바랍니다. 이 특성을 코드 작성으로 설정하려면 itemPositioning 속성을 사용하시기 바랍니다. |
탭바를 internationalize하려면 탭바 아이템 제목에 로컬화된 스트링을 제공해야 합니다.
더 많은 정보는 Internationalization and Localization Guide를 보시기 바랍니다.
Internationalization and Localization Guide
https://developer.apple.com/library/archive/documentation/MacOSX/Conceptual/BPInternational/Introduction/Introduction.html#//apple_ref/doc/uid/10000171i
탭바는 기본값으로 접근 가능한 상태입니다.
iOS 기기에서 보이스오버가 활성화되면 사용자가 탭바에서 탭을 터치할 때 보이스오버는 탭의 제목을 읽고, 바에 있는 위치를 읽으며, 선택되었는지 여부를 읽습니다. 예를 들어 아이패드에서 아이튠즈 앱은 “Selected, Audiobooks, four of seven” 혹은 “Genius, six of seven”을 들을 수 있습니다.
인터페이스를 접근 가능하게 만드는 것에 대한 일반적인 정보는 Accessibility Programming Guide for iOS를 보시기 바랍니다.
Accessibility Programming Guide for iOS
https://developer.apple.com/library/archive/documentation/UserExperience/Conceptual/iPhoneAccessibility/Introduction/Introduction.html#//apple_ref/doc/uid/TP40008785
네비게이션바 객체에서 직접 모양 정보를 커스터마이징합니다.
https://developer.apple.com/documentation/uikit/uinavigationbar/legacy_customizations
https://velog.io/@panther222128/Legacy-Customizations
스크린 하단에 나타나는 바에 추가할 수 있는 아이템의 추상 슈퍼클래스입니다.
https://developer.apple.com/documentation/uikit/uibaritem
https://velog.io/@panther222128/UIBarItem
툴바 혹은 탭바에 놓이는 특수한 버튼입니다.
https://developer.apple.com/documentation/uikit/uibarbuttonitem
https://velog.io/@panther222128/UIBarButtonItem
아이패드에 나타나는 키보드 위의 숏컷 바에 있는 바 버튼 아이템의 집합입니다.
https://developer.apple.com/documentation/uikit/uibarbuttonitemgroup
https://velog.io/@panther222128/UIBarButtonItemGroup
보통의 경우 네비게이션 컨트롤러와 함께 스크린 상단에 따라 바에서 표시되는 네비게이션의 컨트롤입니다.
https://developer.apple.com/documentation/uikit/uinavigationbar
https://velog.io/@panther222128/UINavigationBar
사용자로부터 검색 관련 정보를 받기 위한 특수한 뷰입니다.
https://developer.apple.com/documentation/uikit/uisearchbar
https://velog.io/@panther222128/UISearchBar
인터페이스의 하단 edge를 따라 하나 혹은 하나 이상의 버튼을 표시하는 컨트롤입니다.
https://developer.apple.com/documentation/uikit/uitoolbar
https://velog.io/@panther222128/UIToolbar
탭바에서 아이템을 나타내는 객체입니다.
https://developer.apple.com/documentation/uikit/uitabbaritem
https://velog.io/@panther222128/UITabBarItem