【SwiftUI】色の指定方法(Color)

(2023/11/04 更新)

SwiftUIでの色の指定方法を解説します。
色の指定にはColor構造体を使用します。

スポンサーリンク

環境

この記事で紹介する内容は、以下のバージョンでの動作を確認しています。

【Xcode】15.0.1
【iOS】17.0
【macOS】Ventura 13.6.1
スポンサーリンク

基本的な使い方

UntitledImage

SwiftUIではColor構造体を使って色を指定します。
標準的な色がColor構造体のプロパティとして定義されていますので、プロパティを指定するだけでその色のViewが生成できます。
実行例では、赤色を示すColor.redを生成しています。
これ以外に、色を指定するModifierの引数として渡す使い方もあります。

Viewの色指定

一般的なViewの色は次の2つのModifierで指定します。

.foregroundStyle(ShapeStyle)

Viewの前景色を指定します。Text Viewなら文字の色です。
引数のShapeStyleには、Colorの他に、グラーデーションやImage等ShapeStyleプロトコルに準拠したViewが指定できます。
なお、Colorの場合は次のようにプロパティのみの指定が可能です。

.foregroundStyle()はiOS15以降で使用可能です。
これまで使われていた.foregroundColor()はiOS17以降は非推奨となりました。

.background(ShapeStyle)

Viewの背景色を指定します。
引数に使えるShapeStyleは、.foregroundStyle()と同様です。
.background()モディファイアについては、【SwiftUI】Viewの背景指定(background)でもう少し詳しく解説しています。

UntitledImage

スポンサーリンク

使用可能な色の種類

Color構造体にプロパティとして定義されている色は次の通りです。
SwiftUIで定義されている標準色はダークモードとライトモードの両方で見栄えがするようにカスタムブレンドされているので、純粋な色合いではありません。
また、一部のプロパティは外観モード(ライト/ダーク)によって表示される色が変わります。
「その他」として定義されているプロパティについては、次章で解説します。

ライトモード ダークモード
UntitledImage UntitledImage

上画面の出力コードは次の通りです。

スポンサーリンク

特殊なプロパティ

Color構造体には標準色として定義されている15種類の色指定の他に、いくつかの特殊なプロパティがあります。

.primary と .secondary

テキストのデフォルト色で、外観モード(ライトorダーク)によって色が変わります。
secondaryの方はprimaryに比べて、わずかに透明で背後の色が少し透けて見えます。

.accentColor(アクセントカラー)

iOSでは、標準のコントロールとコンテナで、このaccentColorを使用します。
例えば、Buttonのラベルでは、テキストにaccentColorが使用されます。

accentColorはModifierとして指定すると、デフォルトの色から変更可能です。
1つのViewのaccentColorを設定すると、View内のすべてのViewに影響します。
次の例はVStack内にボタンを作成し、みどり色のaccentColorを指定した例です。

UntitledImage

.clear

透明色を指定するプロパティです。
この色を適用した部分は背景が透けて見えます。

スポンサーリンク

他の色指定方法

標準で定義済の以外の色を使用する場合は、次のように別の指定方法があります。

HSVモデル

色相(hue)、彩度(saturation)、明度(brightness)による色指定です。

各値は0〜1.0の範囲で指定します。
opacity(不透明度)のみ省略可能で、デフォルト値は1.0です。

RGBモデル

赤(Red)、緑(Green)、青(Blue)の濃度による色指定です。

濃度および不透明度は0〜1.0の範囲で指定可能です。
opacity(不透明度)のみ省略可能で、デフォルト値は1.0です。

使用例

RGBの各色の濃度、および不透明度を自由にスライダーで変更しながら色を確認するサンプルです。

UntitledImage

スポンサーリンク

あわせて読みたい記事

【SwiftUI】画面の背景色指定
(2021/09/12 更新) 画面の背景色を指定する方法を解説します。 UIKitではUIViewControllerのプロパティで設定しますが、SwiftUIではどうするのでしょうか?
【SwiftUI】グラデーションの使い方
(2021/09/12 更新) グラデーションとは、連続した階調で色調や透明度が変化していく色の指定を指します。 SwiftUIでは線形、放射状、円すい状の3種類のグラデーションが使えます。 これらのグラデーションはすべて、Viewとして単...
【SwiftUI】ダークモード対応
アセットカタログを使ったダークモード対応について解説します。