[iOS]iOS11 이후의 색을 정의하는 방법(설계 제안)
htps : //에서 ゔぇぺぺr. 아 ぇ. 코 m / ぃ b 등 ry / 아 r ゔ ぇ / 르 ぇ 아세노테 s / ゔ ぇ ぺ r 과 ls / R 응 X X에서 / 챠 rs / nt 로즈 c 치온. HTML # // / p p_re f / c / 우이 d / TP40001051-CH1-SW904
설명은 여러분이 알기 쉽게되어 있기 때문에 할애합니다
주제 코드에서 사용
데포도 충분히 간단합니다.
UIColor(named:"keyColor")
그러나 이렇게하면 매우 기분이 좋습니다.
enum Theme: String {
case keyColor = "keyColor"
case subKeyColor = "subKeyColor"
var color:UIColor {
return UIColor(named: self.rawValue)!
}
var cgColor:CGColor {
return color.cgColor
}
}
// 利用
func hoge() {
backgroundColor = Theme.keyColor.color
layer.borderColor = Theme.subKeyColor.cgColor
}
typo도 무서워
전환도 간단합니다.
소감
예전부터 이렇게 쓰고 싶었던 ☺️
(이하 추가)
또 다른 아이디어 (UIColor의 확장)
이런 쓰기도 할 수 있을 것 같습니다만, 이쪽이 좋습니까?
extension UIColor {
static var keyColor = UIColor(named: "keyColor")!
static var subKeyColor = UIColor(named: "subKeyColor")!
}
// 利用
override func viewDidLoad() {
super.viewDidLoad()
view.backgroundColor = UIColor.keyColor
view.backgroundColor = .keyColor
view.layer.backgroundColor = UIColor.subKeyColor.cgColor
}
다른 아이디어(계층화하고 정리하기 쉽게 함)
UITableView의 기본 backgroundColor를 정의하려는 경우
enum Theme: String {
case keyColor = "keyColor"
case subKeyColor = "subKeyColor"
enum TableView: String {
case backgroundColor = "tableView.background"
}
}
fileprivate extension RawRepresentable where RawValue == String {
var color:UIColor {
return UIColor(named: self.rawValue)!
}
var cgColor:CGColor {
return color.cgColor
}
}
// 利用側
override func viewDidLoad() {
super.viewDidLoad()
view.backgroundColor = Theme.TableView.backgroundColor.color
view.layer.backgroundColor = Theme.TableView.backgroundColor.cgColor
}
복합해보자
조금 과도한 느낌이 있지만
extension UIColor {
static var keyColor = Theme.keyColor
static var subKeyColor = Theme.subKeyColor
}
동적으로 앱 전체의 색 테마가 바뀌는 앱이라면 유효한가? 라고 생각했지만, 원래 그 경우는 ColorSet의 혜택이 거의 없네요
추가: ColorLiteral
말하자면 ColorLiteral이었습니다.
왠지 사용하지 않습니다.
참고
htps : // 메이 m. 코 m / 슈 ft - 코 엠 / 코 r ぃ 테라 l-6223850f7 2c
Reference
이 문제에 관하여([iOS]iOS11 이후의 색을 정의하는 방법(설계 제안)), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/netetahito/items/483dfc7815179f70626a텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)