元のドキュメント: developer.apple.com/documentation/swiftui/landmarks-applying-a-background-extension-effect


サンプルコード


ランドマーク:背景拡張効果の適用


画像をぼかしてサイドバーまたはインスペクタパネルの下に拡張表示するように構成します。



Download 註: ファイル等の再配布は Apple から禁じられているのでこのボタンは何も効果がない。「元のドキュメント」からダウンロードされたい。


iOS 26.0+ iPadOS 26.0+ Mac Catalyst 26.0+ macOS 26.0+ Xcode 26.0+

概観


Landmarks アプリを使えば、世界中の興味深い場所を探索できます。自宅近くの国立公園でも、遠く離れた大陸の僻地でも、このアプリを使えば、冒険の記録を残したり、旅の途中でオリジナルのアクティビティバッジを受け取ったりすることができます。


このサンプルでは、背景拡張効果の適用方法を示します。上部のランドマークビューでは、サンプルは LandmarksView の注目画像と LandmarkDetailView のメイン画像に背景拡張効果を適用します。背景拡張効果は、サイドバーまたはインスペクタパネルを開いたときに、画像をぼかして拡張します。以下の画像は、背景拡張効果を適用した場合と適用しない場合の両方で、LandmarkDetailView のメイン画像を示しています。


<効果有り>


<効果なし>


背景拡張効果を適用するには、サンプルでは。


  1. ビューをコンテナビューの先頭と末尾のエッジに揃えます。

  2. ビューに backgroundExtensionEffect() 修飾子を適用します。

  3. 背景拡張機能内の画像のみを構成し、オーバーレイ内のタイトルとボタンには効果を適用しません。


ビューを前縁と後縁に合わせる


ビューに backgroundExtensionEffect() を適用するには、ビューの先頭端をサイドバーの横に揃え、ビューの末端をコンテナビューの末端に揃えます。


LandmarksView では、LandmarkFeaturedItemView と、それを含む LazyVStack および ScrollView にはパディングがありません。これにより、LandmarkFeaturedItemView をサイドバーの横にあるビューの先端に揃えることができます。


ScrollView(showsIndicators: false) {
    LazyVStack(alignment: .leading, spacing: Constants.standardPadding) {
        LandmarkFeaturedItemView(landmark: modelData.featuredLandmark!)
            .flexibleHeaderContent()
        //...
    }
}

LandmarkDetailView では、メイン画像を含む ScrollViewVStack にもパディングがありません。これにより、メイン画像がコンテナビューの先端に揃うようになります。



画像に背景拡張効果を適用する


LandmarkDetailView では、サンプルは backgroundExtensionEffect() 修飾子を追加することで、メイン画像に背景拡張効果を適用します。


Image(landmark.backgroundImageName)
    //...
      .backgroundExtensionEffect()

サイドバーが開いている場合、システムは画像を以下のように前方方向に拡張します。


  • システムは、画像の先頭部分からサイドバーの幅に一致する部分を切り出します。

  • そして、切り出した部分を画像の先頭部分に向かって水平方向に反転させ、反転させた部分にぼかし処理を施します。

  • システムは、修正された画像部分をサイドバーの下、画像の先端の直前に配置します。

  • インスペクタが開いている場合、システムは画像を後方向に以下のように拡張します。


  • システムは、画像の末尾部分からサイドバーの幅に一致する部分を切り出します。

  • そして、切り出した部分を末尾側に向かって水平方向に反転させ、反転させた部分にぼかし処理を施します。

  • システムは、修正された画像部分を、画像の末尾直後、インスペクタの下に配置します。


  • 画像のみを構成する


    LandmarksView では、LandmarkFeaturedItemView ランドマークに特徴付けられている画像があり、ランドマークのタイトルと、その場所に関する詳細情報をクリックまたはタップできるボタンが含まれています。


    macOS でランドマークのタイトルとボタンがサイドバーの下に表示されないようにするため、このサンプルでは、タイトルとボタンを含むオーバーレイを追加する前に、画像に backgroundExtensionEffect() 修飾子を適用しています。


    Image(decorative: landmark.backgroundImageName)
        //...
          .backgroundExtensionEffect()
          .overlay(alignment: .bottom) {
            VStack {
              Text("Featured Landmark", comment: "Big headline in the main image of
                 featured landmarks.")
                //...
              Text(landmark.name)
                //...
              Button("Learn More") {
                modelData.path.append(landmark)
            }
            //...
        }
        .padding([.bottom], Constants.learnMoreBottomPadding)
    }
    




    以下も見よ


    アプリの特色


    {} ランドマーク:サイドバーまたはインスペクタの下で水平スクロールを拡張する

    サイドバーやインスペクタの下で水平スクロールバーを拡張することで、見た目を改善できます。


    {} ランドマーク:ツールバーにリキッドグラス効果を提供するシステムを改良しました。

    ツールバーを関連するグループに整理することで、見た目と使いやすさを向上させましょう。


    {} ランドマーク:カスタムアクティビティバッジの表示

    アニメーション付きのカスタムアクティビティバッジを表示することで、人々が自分の冒険をする方法を提供します。














    トップへ












    トップへ












    トップへ












    トップへ












    トップへ












    トップへ












    トップへ












    トップへ












    トップへ












    トップへ












    トップへ












    トップへ












    トップへ












    トップへ












    トップへ












    トップへ












    トップへ