UIColor를 Swift로 변환하는 방법UI의 색
개체의 전경색으로 UIColor를 사용하고 싶은데 UIColor를 Color로 변환하는 방법을 모르겠습니다.
var myColor: UIColor
RoundedRectangle(cornerRadius: 5).foregroundColor(UIColor(myColor))
베타 5부터는 UIColor에서 Color를 작성할 수 있습니다.
Color(UIColor.systemBlue)
iOS 및 macOS 모두
Color
이를 위한 네이티브 이니셜라이저를 사용하여UIColor
또는NSColor
주장으로서:
Color(.red) /* or any other UIColor/NSColor you need INSIDE parentheses */
전화 안 함Color(UIColor.red)
노골적으로!!!이것은 당신의 스위프트를 연결할 것입니다.에 대한 UI 코드UIKit
대신, 그냥 전화하세요.Color(.red)
그러면 올바른 모듈이 자동으로 추론됩니다.
또한 이 차이에 유의하십시오.
Color.red /* this `red` is SwiftUI native `red` */
Color(.red) /* this `red` is UIKit `red` */
참고:
Color.red
그리고.UIColor.red
동일하지 않습니다!그들은 서로 다른 가치관을 가지고 있고 서로 다르게 보입니다.그러니 아무 가치도 없는 일이라고 생각하지 마
대신 다음은 동일합니다.SwiftUI.Color.Red == UIKit.UIColor.systemRed
또한 Swift에서 RGB 구성 요소를 가져오는 방법을 확인할 수 있습니다.UI.색상
확장
사용자 지정 변수를 구현하여 다음과 같이 만들 수 있습니다.cgColor
그리고.ciColor
extension UIColor {
/// The SwiftUI color associated with the receiver.
var suColor: Color { Color(self) }
}
그래서 다음과 같습니다.
UIColor.red // UIKit color
UIColor.red.suColor // SwiftUI color
UIColor.red.cgColor // Core graphic color
UIColor.red.ciColor // Core image color
참고: 변환 방법을 보려면 여기를 클릭하십시오.
두 개의 도우미 확장 사용:
구성 요소 추출 방법UIColor
:
extension UIColor {
var rgba: (red: CGFloat, green: CGFloat, blue: CGFloat, alpha: CGFloat) {
var red: CGFloat = 0
var green: CGFloat = 0
var blue: CGFloat = 0
var alpha: CGFloat = 0
getRed(&red, green: &green, blue: &blue, alpha: &alpha)
return (red, green, blue, alpha)
}
}
로.init
와 함께UIColor
:
extension Color {
init(uiColor: UIColor) {
self.init(red: Double(uiColor.rgba.red),
green: Double(uiColor.rgba.green),
blue: Double(uiColor.rgba.blue),
opacity: Double(uiColor.rgba.alpha))
}
}
용도:
Color(uiColor: .red)
편리한 확장 기능을 갖춘 Swift UI에서 사용자 지정 색상:
extension UIColor {
struct purple {
static let normal = UIColor(red:0.043, green:0.576 ,blue:0.588 , alpha:1.00)
static let light = UIColor(red: 1, green: 1, blue: 1, alpha: 1)
static let dark = UIColor(red: 1, green: 1, blue: 1, alpha: 1)
}
struct gray {
static let normal = UIColor(red:0.5, green:0.5 ,blue:0.5 , alpha:1.00)
static let dark = UIColor(red: 1, green: 1, blue: 1, alpha: 1)
}
}
포장Color
의SwiftUI
:
extension UIColor {
var toSUIColor: Color {
Color(self)
}
}
다음을 사용합니다.
var body: some View {
Text("Hello World")
.foregroundColor(Color(UIColor.purple.normal))
.background(Color(UIColor.gray.normal))
// with wrap
//.foregroundColor(UIColor.purple.normal.toSUIColor)
//.background(UIColor.gray.normal.toSUIColor)
}
저는 정말 오래된 취미 생활자입니다.여기 저에게 맞는 한 가지 방법이 있습니다.예, Constant.swift 파일의 재사용 가능한 문에는 전역을 사용합니다.이 예제는 보기 쉽도록 인라인으로 되어 있습니다.나는 이것이 가야 할 길이라고 말하는 것이 아니라 단지 나의 예전 방식일 뿐입니다.
스크린샷(27k)
import SwiftUI
// named color from the developer's pallet
let aluminumColor = Color(UIColor.lightGray)
// a custom color I use often
let butterColor = Color.init(red: 0.9993399978,
green: 0.9350042167,
blue: 0.5304131241)
// how I use this in a SwiftUI VStack:
Text("Fur People")
.font(.title)
.foregroundColor(aluminumColor)
.shadow(color: butterColor, radius: 4, x: 2, y: 2)
.minimumScaleFactor(0.75)
다음과 같은 확장명을 만듭니다.
extension Color {
static let someColor = Color(UIColor.systemIndigo) // << Select any UIColor
}
용도:
struct ContentView: View {
var body: some View {
Rectangle()
.frame(width: 100, height: 100)
.foregroundColor(.someColor)
}
}
언급URL : https://stackoverflow.com/questions/56994464/how-to-convert-uicolor-to-swiftui-s-color
'programing' 카테고리의 다른 글
목록 사이의 공백을 설정하는 방법Android에서 항목 보기 (0) | 2023.08.05 |
---|---|
테이블의 열 이름이 동일한 레코드에 대해 여러 테이블을 쿼리하는 방법 (0) | 2023.08.05 |
Swift에서 iPhone의 화면 너비를 가져오는 방법UI? (0) | 2023.07.31 |
HTML에서 구성 요소의 선택 도구 태그 제거/바꾸기 (0) | 2023.07.31 |
Just SecurityError: 불투명 원본에 localStorage를 사용할 수 없습니다. (0) | 2023.07.31 |