iOS
[Swift 4.2] TabBar item title 색상변경
Jundol
2019. 1. 22. 14:26
꼼꼼한 재은씨의 스위프트 실전편 330p
버전업이 되면서 예문에 나오는 코드에서 변형이 있다.
change color and font in swift 4.2
원본
1 2 3 4 5 6 7 8 9 10 11 12 | if let tbC = self.window?.rootViewController as? UITabBarController { if let tbItems = tbC.tabBar.items { for tbItem in tbItems { // 폰트 색상 변경 tbItem.setTitleTextAttributes([NSAttributedStringKey.foregroundColor.rawValue: UIColor.gray], for: .disabled) tbItem.setTitleTextAttributes([NSAttributedStringKey.foregroundColor.rawValue: UIColor.red], for: .selected) // 전체 아이템의 폰트 크기를 설정한다. tbItem.setTitleTextAttributes([NSAttributedStringKey.font.rawValue: UIFont.systemFont(ofSize: 15)], for: .normal) } } } | cs |
Swift 4.2
1 2 3 4 5 6 7 8 9 10 11 12 | if let tbC = self.window?.rootViewController as? UITabBarController { if let tbItems = tbC.tabBar.items { for tbItem in tbItems { // 폰트 변경 tbItem.setTitleTextAttributes([NSAttributedString.Key(rawValue: NSAttributedString.Key.font.rawValue): UIFont.systemFont(ofSize: 30)], for: .normal) // 폰트 색상 변경 tbItem.setTitleTextAttributes([NSAttributedString.Key(rawValue: NSAttributedString.Key.foregroundColor.rawValue): UIColor.yellow], for: .selected) tbItem.setTitleTextAttributes([NSAttributedString.Key(rawValue: NSAttributedString.Key.foregroundColor.rawValue): UIColor.green], for: .disabled) } } } | cs |
기존에는 rawValue 속성에 다이렉트로 값을 할당했던것 같다. 4.2에서는 rawValue에 할당해서 Key로 넘기는 방식이다.
또한 TabBar Item State 속성에서 .disabled 가 작동하지않는다;;
왜 작동이 안되는건지 모르겠다.
아시는 분 계시면 댓글 부탁드립니다...
추가)
.disabled가 왜 안되는지 모르겠지만 .normal 속성에 같이 할당하면 지장없이 사용할 수 있을것 같다.
예시
1 2 3 4 5 6 7 8 9 10 11 | if let tbC = self.window?.rootViewController as? UITabBarController { if let tbItems = tbC.tabBar.items { for tbItem in tbItems { // 색상과 폰트 크기 같이 변경 tbItem.setTitleTextAttributes([NSAttributedString.Key(rawValue: NSAttributedString.Key.font.rawValue): UIFont.systemFont(ofSize: 30), NSAttributedString.Key(rawValue: NSAttributedString.Key.foregroundColor.rawValue): UIColor.green], for: .normal) // 선택시 색상 변경 tbItem.setTitleTextAttributes([NSAttributedString.Key(rawValue: NSAttributedString.Key.foregroundColor.rawValue): UIColor.yellow], for: .selected) } } } | cs |