12
5

More than 1 year has passed since last update.

色彩士が語る SwiftUIの赤は赤じゃない件

Last updated at Posted at 2022-10-17

はじめに

import SwiftUI
Color(.red) //...(1)
Color.red   //...(2)

(1)と(2)の違い、分かりますか?

答え

表示してみるとこうなります。
red1.png
SwiftUIで作ったアプリを動かしてみたら、なんだか色が違う気がする...:thinking:
そんな時に思い出していただければ幸いです。:blush:

解説

Color(UIColor.red) //...(1)
Color.red   //...(2) == UIcolor.systemRed 

書き下すとこうなります。
(1)はUIColorred(Fixed colors)をColorに変換したものです。
(2)はredという名前ですが、UIColorsystemRed(Standard colors)相当です。

ややこしいわ!:angry:と思った方のために、

Color(uiColor: .red)  //...(1)の代わりに使う

こちらのイニシャライザを使った方が混乱が減ってお薦めです。:blush:
iOS 15.0から使用可能です。:cry:

ちなみに

(1)の書き方はドキュメント上はDeprecatedになっているはずなんですが、

@available(iOS, introduced: 13.0, deprecated: 100000.0, message: "Use Color(uiColor:) (中略)")
extension Color {
    public init(_ color: UIColor)
}

定義を見るとiOS 100000.0でDeprecatedになっているのでビルド時に警告が出ないんです。:joy:

参考

Color | Apple Developer
UIColor | Apple Developer

12
5
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
12
5