๐Ÿ“Œ ํ•„์š”ํ•œ ๊ธฐ๋Šฅ

์ธ์Šคํƒ€๊ทธ๋žจ ํด๋ก ์ฝ”๋”ฉ์„ ํ•˜๋ฉด์„œ ํƒญ๋ฐ”๋ฅผ ๊ตฌํ˜„ํ•˜์˜€๋Š”๋ฐ ๋ฉ”์ธํƒญ์— ์ง„์ž…์‹œ์—๋Š” ํฐ์ƒ‰ ํƒญ๋ฐ” ๋ฐฐ๊ฒฝ๊ณผ ๊ฒ€์ •์ƒ‰์˜ ์•„์ด์ฝ˜๋“ค์ด ํ•„์š”ํ–ˆ๊ณ ,

๋ฆด์Šคํƒญ์„ ๋ˆ„๋ฅผ ๋•Œ๋Š” ํƒญ๋ฐ” ๋ฐฐ๊ฒฝ์ƒ‰์€ 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 // ์„ ํƒ๋˜์ง€ ์•Š์€ ํƒญ๋ฐ” ์•„์ดํ…œ์˜ ์ƒ‰์ƒ์„ ๋ฐ”๊ฟ”์ค€๋‹ค.

+ Recent posts