[SwiftUI]Color(色)を16進数で指定するには?

SwiftUI

どうも、ちょげ(@chogetarou)です。

Colorの色を16進数で指定する方法を紹介します。

スポンサーリンク

方法

インターフェース, インターネット, プログラム, ブラウザ, Www

Colorの色を16進数で指定するには、extensionでイニシャライザを追加します。

まず、以下のように与えられた16進数を色に変換するイニシャライザを追加します。

extension Color {
  init(_ hex: UInt, alpha: Double = 1) {
    self.init(
      .sRGB,
      red: Double((hex >> 16) & 0xFF) / 255,
      green: Double((hex >> 8) & 0xFF) / 255,
      blue: Double(hex & 0xFF) / 255,
      opacity: alpha
    )
  }
}

そして、必要な場面でColorの引数に16進数を指定します。

//第1引数に16進数、第2引数に透明度
Color(0xFF0000, alpha: 1.0)

これでColorの色を16真数で指定できるようになります。

使用例

struct ContentView: View {
    var body: some View {
        VStack {
            Color(0xFF0000, alpha: 1.0)
                .frame(width: 200, height: 200)
            Color(0x00FF00, alpha: 1.0)
                .frame(width: 200, height: 200)
            Color(0x0000FF, alpha: 1.0)
                .frame(width: 200, height: 200)
        }
    }
}

extension Color {
  init(_ hex: UInt, alpha: Double = 1) {
    self.init(
      .sRGB,
      red: Double((hex >> 16) & 0xFF) / 255,
      green: Double((hex >> 8) & 0xFF) / 255,
      blue: Double(hex & 0xFF) / 255,
      opacity: alpha
    )
  }
}

コメント

タイトルとURLをコピーしました