元のドキュメント: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

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



    円錐グラデーション


    static conicGradient(_:center:angle:)

    円錐グラデーションで、与えられた角度から開始し、塗りつぶされた図形内の相対的な中心点に固定された、完全な回転を完了します。


    static func conicGradient(colors: [Color], center: UnitPoint, angle: Angle) -> AngularGradient

    円錐グラデーションは、完全な回転を完了する色のコレクションによって定義されます。


    static func conicGradient(stops: [Gradient.Stop], center: UnitPoint, angle: Angle) -> AngularGradient

    円錐グラデーションは、完全な回転を完了するカラー停止点のコレクションによって定義されます。



    楕円のグラデーション


    static ellipticalGradient(_:center:startRadiusFraction:endRadiusFraction:)

    楕円を描く放射状グラデーション。


    static func ellipticalGradient(colors: [Color], center: UnitPoint, startRadiusFraction: CGFloat, endRadiusFraction: CGFloat) -> EllipticalGradient

    色のコレクションによって定義される楕円を描画する放射状グラデーション。


    static func ellipticalGradient(stops: [Gradient.Stop], center: UnitPoint, startRadiusFraction: CGFloat, endRadiusFraction: CGFloat) -> EllipticalGradient

    カラー停止点のコレクションによって定義される楕円を描画する放射状グラデーション。



    線形グラデーション


    static linearGradient(_:startPoint:endPoint:)

    線形グラデーション。


    static func linearGradient(colors: [Color], startPoint: UnitPoint, endPoint: UnitPoint) -> LinearGradient

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


    static func linearGradient(stops: [Gradient.Stop], startPoint: UnitPoint, endPoint: UnitPoint) -> LinearGradient

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



    放射状グラデーション


    static radialGradient(_:center:startRadius:endRadius:)

    放射状グラデーション。


    static func radialGradient(colors: [Color], center: UnitPoint, startRadius: CGFloat, endRadius: CGFloat) -> RadialGradient

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


    static func radialGradient(stops: [Gradient.Stop], center: UnitPoint, startRadius: CGFloat, endRadius: CGFloat) -> RadialGradient

    カラー停止点のコレクションによって定義される放射状グラデーション。



    素材


    static var ultraThinMaterial: Material

    ほぼ透明な素材。


    static var thinMaterial: Material

    不透明よりは透明な素材。


    static var regularMaterial: Material

    やや透明な素材。


    static var thickMaterial: Material

    半透明というよりは不透明に近い素材。


    static var ultraThickMaterial: Material

    ほぼ不透明な素材。


    static var bar: Material

    システムツールバーのスタイルにマッチする素材。



    画像ペイントスタイル


    static func image(Image, sourceRect: CGRect, scale: CGFloat) -> ImagePaint

    画像の領域を繰り返して図形を塗りつぶす図形スタイル。



    階層的スタイル


    var secondary: some ShapeStyle

    この形状スタイルの 2 番目のレベルを返します。


    var tertiary: some ShapeStyle

    この形状スタイルの 3 番目のレベルを返します。


    var quaternary: some ShapeStyle

    この形状スタイルの 4 番目のレベルを返します。


    var quinary: some ShapeStyle

    この形状スタイルの 5 番目のレベルを返します。


    static var primary: HierarchicalShapeStyle

    現在のコンテンツスタイルの第 1 レベルに対応する形状スタイル。


    static var secondary: HierarchicalShapeStyle

    現在のコンテンツスタイルの第 2 レベルに対応する形状スタイル。


    static var tertiary: HierarchicalShapeStyle

    現在のコンテンツスタイルの第 3レ ベルに対応する形状スタイル。


    static var quaternary: HierarchicalShapeStyle

    現在のコンテンツスタイルの第 4 レベルに対応する形状スタイル。


    static var quinary: HierarchicalShapeStyle

    現在のコンテンツスタイルの第 5 レベルに対応する形状スタイル。



    セマンティック(意味)スタイル


    static var foreground: ForegroundStyle

    現在の文脈における前景のスタイル。


    static var background: BackgroundStyle

    現在の文脈における背景のスタイル。


    static var selection: SelectionShapeStyle

    プラットフォームの慣習的な色や動作に従って、選択状態を視覚的に示すために使用されるスタイル。


    static var separator: SeparatorShapeStyle

    前景の区切り線や境界線に適したスタイル。


    static var tint: TintShapeStyle

    現在の tint 色を反映したスタイル。


    static var placeholder: PlaceholderTextShapeStyle

    プレースホルダーテキストに適したスタイル。


    static var link: LinkShapeStyle

    リンクに適したスタイル。


    static var fill: FillShapeStyle

    図形を塗りつぶすためのオーバーレイ塗りつぶしスタイル。


    static var windowBackground: WindowBackgroundShapeStyle

    要素が属するウィンドウの背景色に合わせるべき要素に適したスタイル。




    @@@@@@@@@@@@@@
    05/06ここまで
    @@@@@@@@@@@@@@





    関連


    以下への継承


    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   廃止  















    トップへ












    トップへ












    トップへ












    トップへ












    トップへ












    トップへ












    トップへ












    トップへ












    トップへ












    トップへ












    トップへ












    トップへ












    トップへ












    トップへ












    トップへ












    トップへ












    トップへ












    トップへ