적당한 고통은 희열이다

- 댄 브라운 '다빈치 코드' 중에서

Swift iOS 앱 개발/실전 Swift

[Swift iOS] Color setting

hongssup_ 2023. 6. 8. 12:37
반응형

* asset에 컬러 추가. 활용하기

enum Colors 에 static let 으로 선언? 

아니면 기존 방식대로? 

 

xcode 에서 swift로 UIColor 적용할 때, asset에 colorset 추가 후에 enum Colors 안에 static let 으로 컬러들을 선언해서 사용하는 게 좋을까, 아니면 UIColor 에 extension으로 UIColor를 반환하는 함수를 만들어서 안에 switch case로 컬러를 선언해주는 게 더 좋을까?

1. enum Colors 안에 static let 으로 컬러들을 선언해서 사용

2. UIColor에 extension으로 UIColor를 반환하는 함수를 만들어서 switch case로 컬러를 가져와서 사용. 

1번의 장점 : 컬러를 타입 안전하게 사용할 수 있다. 코드가 간결해지고 명확하며 가독성이 좋아진다. 

2번의 장점 : 컬러를 동적으로 변경하거나 계산해야할 때, 변환 로직을 extension 내에서 직접 정의할 수 있어 유연성이 높다..?

2번의 단점 : 코드가 길어질 수 있고, 가독성이 좋지 않을 수 있다. 

enum MyColors {
    case turquoise
    case gray
}

extension UIColor {
    static func custom(color: MyColors) -> UIColor {
        switch color {
        case .turquoise:
            return UIColor(red: 0, green: 155, blue: 156)
        case .gray:
            return UIColor(red: 102, green: 102, blue: 102)
        }
    }
}

 

enum MyColors {
    static let turquoise = UIColor(named: “turquoise”) 
    static let gray = UIColor(named: “gray”)
}

 

 

enum Design 안에 넣을까 아니면 그냥 넣을까. 디자인 안에 들어갈만한거? Colors, Font

 

UIColor를 설정하는 방법은 개발자의 선호도에 따라 다를 수 있습니다. 그러나 일반적으로는 UIColor의 초기화를 위해 RGB 값을 사용하는 것보다 Asset Catalog에 Color Set을 추가하여 사용하는 것이 더 좋은 방법으로 간주됩니다. 이는 다음과 같은 이유로 인해 권장됩니다:

 

  1. 일관성: Asset Catalog을 사용하면 일관성을 유지할 수 있습니다. 앱의 색상 팔레트를 중앙 관리할 수 있으며, 변경이 필요한 경우 모든 곳에서 일관된 방식으로 업데이트할 수 있습니다. 따라서 앱의 색상 테마를 변경하는 경우, 코드 전체를 검토하고 수정할 필요 없이 Asset Catalog에서 변경할 수 있습니다.
  2. 다크 모드 지원: Asset Catalog을 사용하면 다크 모드와 같은 다양한 주제를 지원하는 데 도움이 됩니다. Asset Catalog에서는 각 색상에 대해 라이트 모드 및 다크 모드에 대한 다른 값으로 색상을 설정할 수 있습니다. 코드에서 RGB 값을 사용하는 경우 모든 다크 모드 색상을 일일이 처리해야 할 수 있습니다.
  3. 유지 보수 및 가독성: Asset Catalog은 UI 색상을 관리하기 위한 시각적인 방법을 제공하므로 코드에서 직접 RGB 값을 사용하는 것보다 가독성이 더 좋습니다. RGB 값을 사용하는 경우 색상을 읽기 어려울 수 있으며, 코드가 길어지고 복잡해질 수 있습니다.

물론 특정 상황에 따라 RGB 값을 사용하는 것이 편리할 수도 있습니다. 예를 들어 프로그래밍적으로 색상을 계산하거나 변경해야 하는 경우에는 RGB 값을 사용하는 것이 유용할 있습니다. 그러나 일반적으로는 Asset Catalog 사용하여 UIColor 설정하는 것이 권장되는 방법입니다.

728x90
반응형