SwiftUI 금은동을 코드로 표현하기
소개
일본중이 도쿄 올림픽 응원 무드로 큰 분위기.
거리 가는 사람들의 화제도 올림픽 테마로 가지고 있습니다.
어느 선수가 메달을 취할지, 지금부터 슈퍼 재미로 밤에도 잠을 잘 수 없습니다 😂
그런데, 그런 경기 좋은 일본을 뒷받침하기 위해 iOS 앱에서도 금색, 은색, 구리색 을 사용하고 싶다, 그래서 SwiftUI 에서 Gold, Silver, Bronze 를 사용해 가고 싶습니다.
사용법
색을 칠하려는 View에 .shine(ShineColor)
를 추가합니다.
색을 칠하려는 View에
.shine(ShineColor)
를 추가합니다..shine(.gold)
.shine(.silver)
.shine(.bronze)
Sample.swift
// 例: 金色のテキスト "GOLD"
Text("GOLD")
.shine(.gold)
// 例: 銀色の四角形 ■
Rectangle()
.shine(.silver)
Copipe 코드
둥글게 뻗어서 프로젝트 안의 어딘가에서 주세요.
ShineColor.Swiftimport SwiftUI
enum ShineColor {
case gold
case silver
case bronze
var colors: [Color] {
switch self {
case .gold: return [ Color(hex: 0xDBB400),
Color(hex: 0xEFAF00),
Color(hex: 0xF5D100),
Color(hex: 0xE0CA82),
Color(hex: 0xD1AE15),
Color(hex: 0xDBB400),
]
case .silver: return [ Color(hex: 0x70706F),
Color(hex: 0x7D7D7A),
Color(hex: 0xB3B6B5),
Color(hex: 0x8E8D8D),
Color(hex: 0xB3B6B5),
Color(hex: 0xA1A2A3),
]
case .bronze: return [ Color(hex: 0x804A00),
Color(hex: 0x9C7A3C),
Color(hex: 0xB08D57),
Color(hex: 0x895E1A),
Color(hex: 0x804A00),
Color(hex: 0xB08D57),
]}
}
var linearGradient: LinearGradient
{
return LinearGradient(
gradient: Gradient(colors: self.colors),
startPoint: .topLeading,
endPoint: .bottomTrailing
)
}
}
extension View {
func shine(_ color: ShineColor) -> some View {
ZStack {
self.opacity(0)
color.linearGradient.mask(self)
}.fixedSize()
}
}
fileprivate extension Color {
init(hex: UInt, alpha: Double = 1) {
self.init( .sRGB,
red: Double((hex >> 16) & 0xff) / 255,
green: Double((hex >> 08) & 0xff) / 255,
blue: Double((hex >> 00) & 0xff) / 255,
opacity: alpha )
}
}
사이고에게
불요 불급의 외출은 삼가합시다.
Reference
이 문제에 관하여(SwiftUI 금은동을 코드로 표현하기), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/Rubydog/items/e33e32e2bb89fc5174ce
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
import SwiftUI
enum ShineColor {
case gold
case silver
case bronze
var colors: [Color] {
switch self {
case .gold: return [ Color(hex: 0xDBB400),
Color(hex: 0xEFAF00),
Color(hex: 0xF5D100),
Color(hex: 0xE0CA82),
Color(hex: 0xD1AE15),
Color(hex: 0xDBB400),
]
case .silver: return [ Color(hex: 0x70706F),
Color(hex: 0x7D7D7A),
Color(hex: 0xB3B6B5),
Color(hex: 0x8E8D8D),
Color(hex: 0xB3B6B5),
Color(hex: 0xA1A2A3),
]
case .bronze: return [ Color(hex: 0x804A00),
Color(hex: 0x9C7A3C),
Color(hex: 0xB08D57),
Color(hex: 0x895E1A),
Color(hex: 0x804A00),
Color(hex: 0xB08D57),
]}
}
var linearGradient: LinearGradient
{
return LinearGradient(
gradient: Gradient(colors: self.colors),
startPoint: .topLeading,
endPoint: .bottomTrailing
)
}
}
extension View {
func shine(_ color: ShineColor) -> some View {
ZStack {
self.opacity(0)
color.linearGradient.mask(self)
}.fixedSize()
}
}
fileprivate extension Color {
init(hex: UInt, alpha: Double = 1) {
self.init( .sRGB,
red: Double((hex >> 16) & 0xff) / 255,
green: Double((hex >> 08) & 0xff) / 255,
blue: Double((hex >> 00) & 0xff) / 255,
opacity: alpha )
}
}
불요 불급의 외출은 삼가합시다.
Reference
이 문제에 관하여(SwiftUI 금은동을 코드로 표현하기), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/Rubydog/items/e33e32e2bb89fc5174ce텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)