자산 카탈로그 색상 집합을 어떻게 사용할 수 있습니까?
저는 보통 스위프트와 함께 확장을 사용하여 iOS에서 커스텀 UI 컬러를 사용하지만, 이제 iOS 11/Xcode 9를 사용하면 컬러 세트를 만들 수 있습니다.어떻게 사용할 수 있을까요?
업데이트 - 팁
@Cœur의 말에 따르면, 컬러를 드래그 앤 드롭하여 UIColor 객체처럼 사용할 수 있으며, 가능한 솔루션은 이를 확장으로 사용할 수 있습니다.
또는 상수로서:
이제 자산 이미지에 대한 UI 이미지 액세스처럼 액세스할 수 있는지 여부를 알고 싶습니다. 다음과 같습니다.
UIImage(named: "image-name") -> UIColor(named: "color-name")
UIColor(named: "myColor")
출처: WWDC 2017 Session 237 —— MapKit의 새로운 기능
주의 사항: 프로젝트의 배포 대상을 iOS 11.0으로 설정해야 합니다.
(질문 업데이트에 대한 짧은 답변: Xcode 9.0에 있습니다.)
원래 질문에 대한 답변:
- 당신은 당신의 컬러 세트를 만듭니다.
- 토막글에서 자신의 색을 찾아서 드래그 앤 드롭합니다.
소스 코드를 볼 때 색상 리터럴로 변환됩니다.
#colorLiteral(red: 0, green: 0.6378085017, blue: 0.8846047521, alpha: 1)
빨강, 초록, 파랑의 값이 어떻게 다른지 알아채셨나요?색 공간을 이용해서 정의를 내렸기 때문입니다.Display P3, Literal은 Color Space를 사용하고 있습니다.sRGB.
Xcode 11 press command + shift + L에서 토막글을 열고 이미지 드래그 앤 드롭에 표시된 것처럼 마지막 하나를 선택합니다.
쇼트 버전
자산 카탈로그에 색상 세트를 추가하고 이름을 지정한 후 속성 검사기에 색상을 설정한 다음 코드에 다음과 같이 호출합니다.UIColor(named: "MyColor").
전체 지침
자산 카탈로그 뷰어에서 기본 패널의 오른쪽 하단에 있는 더하기 버튼을 클릭하고 새 색상 세트를 선택합니다.

흰색 사각형을 클릭하고 Attributes Inspector(오른쪽 창에서 맨 오른쪽 아이콘)를 선택합니다.
거기서 이름을 짓고 색상을 선택할 수 있습니다.

코드에 사용하려면 다음과 같이 호출합니다.
UIColor(named: "MyColor"). 이렇게 하면 옵션이 반환되므로 대부분의 경우 포장을 해제해야 합니다(자산 카탈로그에 색상이 있는 것을 감안하면 강제 포장 해제가 허용되는 몇 안 되는 경우 중 하나일 것입니다).
이거 써야 돼요.
그리고 UIColor extension에서 간단한 접근을 위한 기능을 만들 수 있습니다.
enum AssetsColor {
case yellow
case black
case blue
case gray
case green
case lightGray
case separatorColor
case red
}
extension UIColor {
static func appColor(_ name: AssetsColor) -> UIColor? {
switch name {
case .yellow:
return UIColor(named: "appYellow")
case .black:
return UIColor(named: "appBlack")
case .blue:
return UIColor(named: "appBlue")
case .gray:
return UIColor(named: "appGray")
case .lightGray:
return UIColor(named: "appLightGray")
case .red:
return UIColor(named: "appRed")
case .separatorColor:
return UIColor(named: "appSeparatorColor")
case .green:
return UIColor(named: "appGreen")
}
}
}
다음과 같이 사용할 수 있습니다.
userNameTextField.textColor = UIColor.appColor(.gray)
이 방법으로 간단한 접근이 가능합니다(swift 4 & swift 5).
enum AssetsColor: String {
case backgroundGray
case blue
case colorAccent
case colorPrimary
case darkBlue
case yellow
}
extension UIColor {
static func appColor(_ name: AssetsColor) -> UIColor? {
return UIColor(named: name.rawValue)
}
}
사용방법:
userNameTextField.textColor = UIColor.appColor(.blue)
// iOS
let color = UIColor(named: "SillyBlue")
// macOS
let color = NSColor(named: "SillyBlue")
리터럴을 사용하여 이미지와 같은 색상 자산에 접근할 수 있는지 질문을 위해 Xcode 10.2 기준으로 입력할 수 있습니다.colorliteral 관리자 할 수 . 에 할 을 할 할 을 할 .
사용시 Swift Package에서 색상 로딩이 지연되는 경우UIColor(named:):
하지만, 패키지로 , Δ Δ Δ Δ Δ Δ Δ Δ Δ Δ Δ Δ Δ Δ Δ Δ Δ Δ Δ Δ Δ Δ Δ Δ Δ Δ Δ Δ Δ Δ Δ Δ Δ Δ Δ Δ Δ Δ Δ Δ Δ Δ Δ Δ Δ Δ Δ Δ Δ Δ Δ Δ Δ ΔΔ Δ Δ Δ Δ ΔUIColor(named: "example_name"). 사용하는 경우UIColor(named: "background", in: Bundle.module, compatibleWith: .current)모듈을 목표로 하는 오버로드가 발생하면 색상이 지체 없이 즉시 로드됩니다.
참고: Xcode 12.1에서 경험했습니다.
속히UI는 클래스를 만들고 이름을 지정합니다: Color+extension and extension Color :
import SwiftUI
extension Color {
static let background = Color("BackgroundColor")
static let whiteColor = Color("WhiteColor")
static let blackColor = Color("BackgroundColor")
static let primery = Color("PrimeryColor")
static let secondaryColor = Color("SecondaryColor")
}
자산의 색상을 압축 해제하는 기능으로 확장 기능을 만들어 앱의 모든 색상과 함께 사용할 수 있습니다.
extension UIColor {
static var someColor: UIColor {
return UIColor.color(name: "SomeColor")
}
private static func color(name: String) -> UIColor {
guard let color = UIColor(named: name) else {
return .black
}
return color
}
}
사용 예:
UIColor.someColor
아니면
someLabel.textColor = .someColor
아니면, 스위프트와 함께.UI 구조, 자산 이름으로 이니셜라이저를 호출하기만 하면 됩니다.
Color("background")
언급URL : https://stackoverflow.com/questions/44397680/how-can-we-use-assets-catalog-color-sets
'programing' 카테고리의 다른 글
| json data에 대한 압축을 푸는 트리거를 만들려면 어떻게 해야 합니까? (0) | 2023.09.15 |
|---|---|
| WooCommerce 리뷰 양식에 "리뷰 제목" 필드를 추가하는 방법은? (0) | 2023.09.15 |
| mariadb가 컨테이너 외부에 있을 수 없습니다. (0) | 2023.09.10 |
| XPath로 CSS 클래스별로 요소를 찾으려면 어떻게 해야 합니까? (0) | 2023.09.10 |
| 플라스크로 사용자 에이전트를 받으려면 어떻게 해야 합니까? (0) | 2023.09.10 |





