๐ ํ์ํ ๊ธฐ๋ฅ
์ธ์คํ๊ทธ๋จ ํด๋ก ์ฝ๋ฉ์ ํ๋ฉด์ ํญ๋ฐ๋ฅผ ๊ตฌํํ์๋๋ฐ ๋ฉ์ธํญ์ ์ง์ ์์๋ ํฐ์ ํญ๋ฐ ๋ฐฐ๊ฒฝ๊ณผ ๊ฒ์ ์์ ์์ด์ฝ๋ค์ด ํ์ํ๊ณ ,
๋ฆด์คํญ์ ๋๋ฅผ ๋๋ ํญ๋ฐ ๋ฐฐ๊ฒฝ์์ black์ผ๋ก, item๋ค ์์ white๋ก ๋ณ๊ฒฝํด์ผ ํ๋ค.
๊ตฌํ ํ ํ๋ฉด์ ๋ค์๊ณผ ๊ฐ๋ค.
๐ ์ด๊ธฐ ์ค์
* ์คํ ๋ฆฌ๋ณด๋๋ก ๊ตฌํํ์๊ธฐ ๋๋ฌธ์ ์ธ์คํํฐ ์ฐฝ์์ ์ค์ ํด์ฃผ์์ต๋๋ค.
๋จผ์ ์ด๊ธฐ ์ค์ ์ ์ํด TabBarController๊ฐ ์๋ ์คํ ๋ฆฌ๋ณด๋์์ ํญ๋ฐ๋ฅผ ์ ํํ๊ณ ์ค๋ฅธ์ชฝ ์ธ์คํํฐ ์ฐฝ์์ Background๋ก White Color๋ก ์ค์ ํ์๋ค.
๊ทธ๋ฆฌ๊ณ User Defined Runtime Attributes์์ unselectedItemTintColor์ tintColot๋ฅผ Black์ผ๋ก ์ค์ ํ์๋ค.
* tintColor๋ ์ ํ๋ ํญ๋ฐ์์ดํ , unselectedItemTintColor๋ ๋๋จธ์ง ํญ๋ฐ์์ดํ ์์์ด๋ค.
์ด๋ ๊ฒ ํ๋ฉด ๋ฉ์ธํ๋ฉด์ผ๋ก ์ง์ ์ ์๋์ ๊ฐ์ด ๋์จ๋ค.
๐ Delegate
๋ฆด์คํญ์ ์ ํํ ๊ฒฝ์ฐ ์์๋ค์ ๋ฐ๊ฟ์ฃผ๊ธฐ ์ํด Delegate๋ฅผ ์ฌ์ฉํ๋ค.
์ฝ๋๋ฅผ ๋จผ์ ๋ณด๊ณ ์ค๋ช ํ๋๋ก ํ๊ฒ ๋ค.
import UIKit
class TabBarController: UITabBarController {
// MARK: - Life Cycle
override func viewDidLoad() {
super.viewDidLoad()
setDelegate()
}
}
// MARK: - Custom Methods
extension TabBarController {
private func setDelegate() {
self.delegate = self
}
}
// MARK: - UITabBarControllerDelegate
extension TabBarController: UITabBarControllerDelegate {
func tabBarController(_ tabBarController: UITabBarController, didSelect viewController: UIViewController) {
if selectedIndex == 2 {
tabBar.backgroundColor = .black
tabBar.tintColor = .white
tabBar.unselectedItemTintColor = .white
} else {
tabBar.backgroundColor = .white
tabBar.tintColor = .black
tabBar.unselectedItemTintColor = .black
}
}
}
๋จผ์ UITabBarControllerDelegate ํ๋กํ ์ฝ ์ฑํ ์์ ์ ์งํํ๋ค. ์๋ ๋ถ๋ถ์ ํด๋นํ๋ค.
extension TabBarController: UITabBarControllerDelegate {}
* ์ ๋ ๊ฐ๋ ์ฑ์ ์ํด extension์ผ๋ก ๋นผ์ค ๊ฒ์ด๋ฏ๋ก ์๋์ ๊ฐ์ด ์์ฑํด์ฃผ๋ ๊ฒ๋ ๊ฐ๋ฅํฉ๋๋ค.
class TabBarController: UITabBarController, UITabBarControllerDelegate {}
์ดํ Delegate ๋๋ฆฌ์๋ฅผ ์ค์ ํด์ฃผ์ด์ผ ํ๋ค.
self.delegate = self
์ด ์ฝ๋๋ฅผ viewDidLoad()์ ์์ฑํด์ค๋ค.
* ์ ๋ ํจ์๋ก ๋นผ์ฃผ์์ต๋๋ค.
ํด๋น ์ฝ๋๋ ํญ๋ฐ ์์ดํ ์ ์ ํํ์ ๋ TabBarController๊ฐ delegate๋ฅผ ์ฌ์ฉํ๊ธฐ ์ํ ๊ฒ์ด๋ค.
๐ ์์ ๋ณ๊ฒฝ
func tabBarController(_ tabBarController: UITabBarController, didSelect viewController: UIViewController) {
if selectedIndex == 2 {
tabBar.backgroundColor = .black
tabBar.tintColor = .white
tabBar.unselectedItemTintColor = .white
} else {
tabBar.backgroundColor = .white
tabBar.tintColor = .black
tabBar.unselectedItemTintColor = .black
}
}
tabBarController ํจ์๋ tabBar delegate method๋ก ํญ์ด ์ ํ๋์์ ๋ ์๋ํ๋ค.
selectedIndex๋ ๋ช ๋ฒ์งธ ๋ทฐ์ปจ์ ์ ํํ๋์ง์ ๋ํ ์ธ๋ฑ์ค ๊ฐ์ด๋ค.
์ธ๋ฑ์ค ๊ฐ์ 0๋ถํฐ ์์ํ๋ฏ๋ก ๋ฆด์คํญ์ ์ธ๋ฑ์ค ๊ฐ์ด 2์ด๋ค.
๋ฐ๋ผ์ selectedIndex ๊ฐ์ด 2์ผ ๊ฒฝ์ฐ ๋ฐฐ๊ฒฝ์ ๊ฒ์ ์ผ๋ก, ์์ดํ ์ ํฐ์์ผ๋ก ๋ฐ๊ฟ์ฃผ๋ ์์ ์ ํ๋ฉด ๋๋ค.
์ถ๊ฐ๋ก selectedIndex ๊ฐ์ด 2๊ฐ ์๋ ๊ฒฝ์ฐ๋ ๋ค์ ๋ฐฐ๊ฒฝ์ ํฐ์์ผ๋ก, ์์ดํ ์ ๊ฒ์ ์์ผ๋ก ๋ฐ๊ฟ์ฃผ๋ ์์ ์ด ํ์ํ๋ค.
์ด ์ธ ๊ฐ์ ์์ฑ์ ์ฃผ๋ฉด ๋๋ค!
tabBar.backgroundColor = .black // ํญ๋ฐ์ ๋ฐฐ๊ฒฝ ์์์ ๋ฐ๊ฟ์ค๋ค.
tabBar.tintColor = .white // ์ ํ๋ ํญ๋ฐ ์์ดํ
์ ์์์ ๋ฐ๊ฟ์ค๋ค.
tabBar.unselectedItemTintColor = .white // ์ ํ๋์ง ์์ ํญ๋ฐ ์์ดํ
์ ์์์ ๋ฐ๊ฟ์ค๋ค.