はじめに
import SwiftUI
Color(.red) //...(1)
Color.red //...(2)
(1)と(2)の違い、分かりますか?
答え
表示してみるとこうなります。
SwiftUIで作ったアプリを動かしてみたら、なんだか色が違う気がする...
そんな時に思い出していただければ幸いです。
解説
Color(UIColor.red) //...(1)
Color.red //...(2) == UIcolor.systemRed
書き下すとこうなります。
(1)はUIColor
のred
(Fixed colors)をColorに変換したものです。
(2)はred
という名前ですが、UIColor
のsystemRed
(Standard colors)相当です。
ややこしいわ!と思った方のために、
Color(uiColor: .red) //...(1)の代わりに使う
こちらのイニシャライザを使った方が混乱が減ってお薦めです。
iOS 15.0から使用可能です。
ちなみに

(1)の書き方はドキュメント上はDeprecatedになっているはずなんですが、
@available(iOS, introduced: 13.0, deprecated: 100000.0, message: "Use Color(uiColor:) (中略)")
extension Color {
public init(_ color: UIColor)
}
定義を見るとiOS 100000.0
でDeprecatedになっているのでビルド時に警告が出ないんです。