元のドキュメント:developer.apple.com/documentation/swiftui/shapestyle


プロトコル


ShapeStyle


図形を描画する際に使用する色またはパターン。


iOS 13.0+ iPadOS 13.0+ macOS 10.15+

tvOS 13.0 VisionOS 1.0+ WatchOS 6.0+

protocol ShapeStyle : Sendable





概観


ShapeStyle プロトコルに準拠する型を宣言し、必要な revolution 関数を実装することで、カスタムシェイプスタイルを作成できます。この関数は、現在の環境に基づいて目的の外観を表すシェイプスタイルを返します。


例えば、以下のシェイプスタイルは、環境から現在のカラースキームを読み取り、その色が合成されるブレンドモードを選択します。


struct MyShapeStyle: ShapeStyle {
    func resolve(in environment: EnvironmentValues) -> some ShapeStyle {
        if environment.colorScheme == .light {
            return Color.red.blendMode(.lighten)
        } else {
            return Color.red.blendMode(.darken)
        }
    }
}

カスタムシェイプスタイルを作成するだけでなく、SwiftUI で定義されている具体的なスタイルの一つを使用することもできます。特定の色やパターンを指定するには、Color を使用でき、image(_:sourceRect:scale:) で返されるスタイル、または radialGradient(_:center:startRadius:endRadius:) で返されるようなグラデーションタイプを使用できます。与えられたプラットフォームのコンテキストに適した色を設定するには、backgroundprimary などのセマンティックスタイル (意味のあるスタイル) を使用します。


シェイプスタイルは、以下の方法で使用できます。


  • fill(_:style:) 修飾子を使用してシェイプをスタイルで塗りつぶす:

  • Path { path in
        path.move(to: .zero)
        path.addLine(to: CGPoint(x: 50, y: 0))
        path.addArc(
            center: .zero,
            radius: 50,
            startAngle: .zero,
            endAngle: .degrees(90),
            clockwise: false)
    }
    .fill(.radialGradient(
        Gradient(colors: [.yellow, .red]),
        center: .topLeading,
        startRadius: 15,
        endRadius: 80))
    


  • stroke(_:lineWidth:) または stroke(_:style:) 修飾子を使用して、スタイルを持つ図形の輪郭をトレースします。

  • RoundedRectangle(cornerRadius: 10)
        .stroke(.mint, lineWidth: 10)
        .frame(width: 200, height: 50)
    


  • foregroundStyle(_:) 修飾子を使用してビュー内の前景要素のスタイルを設定します:

  • VStack(alignment: .leading) {
        Text("Primary")
            .font(.title)
        Text("Secondary")
            .font(.caption)
            .foregroundStyle(.secondary)
    }
    





    トピックス


    システムカラー


    static var black: Color

    UI 要素での使用に適した黒色。


    static var blue: Color

    UI 要素での使用に適したコンテキスト依存の青色。


    static var brown: Color

    UI 要素での使用に適したコンテキスト依存の茶色。


    static var clear: Color

    UI 要素での使用に適したクリアカラー。


    static var cyan: Color

    UI 要素での使用に適したコンテキスト依存のシアン色。


    static var gray: Color

    UI 要素での使用に適したコンテキスト依存の灰色。


    static var green: Color

    UI 要素での使用に適したコンテキスト依存の緑色。


    static var indigo: Color

    UI 要素での使用に適したコンテキスト依存のインディゴ色。


    static var mint: Color

    UI 要素での使用に適したコンテキスト依存のミント色。


    static var orange: Color

    UI 要素での使用に適したコンテキスト依存のオレンジ色。


    static var pink: Color

    UI 要素での使用に適したコンテキスト依存のピンク色。


    static var purple: Color

    UI 要素での使用に適したコンテキスト依存の紫色。


    static var red: Color

    UI 要素での使用に適したコンテキスト依存の赤色。


    static var teal: Color

    UI 要素での使用に適したコンテキスト依存のティール色。


    static var white: Color

    UI 要素での使用に適した白色。


    static var yellow: Color

    UI 要素での使用に適したコンテキスト依存の黄色。



    角度のグラデーション


    static angularGradient(_:center:startAngle:endAngle:)

    角度のグラデーションとは、開始角度と終了角度の間で角度が変化するにつれて色関数を適用するもので、塗りつぶされた形状内の相対的な中心点に固定されます。


    static func angularGradient(colors: [Color], center: UnitPoint, startAngle: Angle, endAngle: Angle) -> AngularGradient

    色のコレクションによって定義される角度のグラデーション。


    static func angularGradient(stops: [Gradient.Stop], center: UnitPoint, startAngle: Angle, endAngle: Angle) -> AngularGradient

    色の停止点のコレクションによって定義される角度のグラデーション。




    @@@@@@@@@@@@@@
    04/29ここまで
    @@@@@@@@@@@@@@





    関連


    以下への継承


    Actor

    AnyActor

    Clock

    CodingKey

    DistributedActor

    DistributedActorSystem

    DistributedActorSystemError

    DurationProtocol

    Error

    Executor

    InstantProtocol

    SerialExecutor

    UnsafeSendable






    以下も見よ


    Actors


    protocol Actor

    すべての Actor (アクター) が準拠する共通プロトコル。


    protocol AnyActor

    (ローカルな) Actor 型と (潜在的にリモートな) DistributedActor 型の両方に共有の "base" を提供する共通のマーカープロトコル。


    class MainActor

    実行部分がメインのディスパッチキューに相当する単独アクター。


    protocol GlobalActor

    プログラム内の任意の場所でさまざまな宣言を分離するために使用できる、グローバル的に一意なアクターを表す型。


    typealias ConcurrentValue   廃止  


    protocol UnsafeSendable

    値をコピーすることで同時実行ドメイン間でその値を安全に渡すことができる型ですが、準拠サイトでの一部の安全性チェックが無効になります。
      廃止  


    typealias UnsafeConcurrentValue   廃止  















    トップへ












    トップへ












    トップへ












    トップへ












    トップへ












    トップへ












    トップへ












    トップへ












    トップへ












    トップへ












    トップへ












    トップへ












    トップへ












    トップへ












    トップへ












    トップへ












    トップへ












    トップへ