[iOS]iOS11 이후의 색을 정의하는 방법(설계 제안)

iOS11에서 Assets까지 색상을 정의할 수 있습니다.
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

좋은 웹페이지 즐겨찾기