* 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을 추가하여 사용하는 것이 더 좋은 방법으로 간주됩니다. 이는 다음과 같은 이유로 인해 권장됩니다:
- 일관성: Asset Catalog을 사용하면 일관성을 유지할 수 있습니다. 앱의 색상 팔레트를 중앙 관리할 수 있으며, 변경이 필요한 경우 모든 곳에서 일관된 방식으로 업데이트할 수 있습니다. 따라서 앱의 색상 테마를 변경하는 경우, 코드 전체를 검토하고 수정할 필요 없이 Asset Catalog에서 변경할 수 있습니다.
- 다크 모드 지원: Asset Catalog을 사용하면 다크 모드와 같은 다양한 주제를 지원하는 데 도움이 됩니다. Asset Catalog에서는 각 색상에 대해 라이트 모드 및 다크 모드에 대한 다른 값으로 색상을 설정할 수 있습니다. 코드에서 RGB 값을 사용하는 경우 모든 다크 모드 색상을 일일이 처리해야 할 수 있습니다.
- 유지 보수 및 가독성: Asset Catalog은 UI 색상을 관리하기 위한 시각적인 방법을 제공하므로 코드에서 직접 RGB 값을 사용하는 것보다 가독성이 더 좋습니다. RGB 값을 사용하는 경우 색상을 읽기 어려울 수 있으며, 코드가 길어지고 복잡해질 수 있습니다.
물론 특정 상황에 따라 RGB 값을 사용하는 것이 더 편리할 수도 있습니다. 예를 들어 프로그래밍적으로 색상을 계산하거나 변경해야 하는 경우에는 RGB 값을 사용하는 것이 유용할 수 있습니다. 그러나 일반적으로는 Asset Catalog을 사용하여 UIColor를 설정하는 것이 더 권장되는 방법입니다.
'Swift iOS 앱 개발 > 실전 Swift' 카테고리의 다른 글
[Swift iOS] UILabel Gradient color (+ SwiftUI gradient text) (0) | 2024.01.25 |
---|---|
[Swift] UIImage grayscale 이미지 흑백 변환 (0) | 2023.12.27 |
UIKit (0) | 2023.05.23 |
[Swift iOS] 이미지 캐시 처리 Memory vs. Disk (1) | 2023.04.24 |
[Swift iOS] 네이버 지도 API 사용하기 (0) | 2023.04.13 |