CustomNavigationTitleは、スクロールに応じてナビゲーションタイトルをアニメーション付きで表示・非表示にするSwiftUI用のシンプルなパッケージです。(この効果はApple純正の設定アプリ、メールアプリ、AppStoreアプリで使われています。)
- スクロールに応じてタイトルがフェードイン・アウト
- シンプルなAPIで既存のコードのまま簡単に導入可能
- SwiftUIの
ScrollView、List、Formに対応
- iOS 16.0+
- MacCatalyst 16.0+
- macOS 13.0+
Swift Package Manager (SPM) を使用してインストールできます。
- Xcode でプロジェクトを開きます。
- File > Add Package Dependency... を選択します。
https://github.com/Chronos2500/CustomNavigationTitle.gitを入力します。- バージョン指定ルール等を設定し、 Add Package をクリックします。
ScrollView、List、Formのいずれかに.scrollAwareTitle("CustomTitle")修飾子を追加します。- 次にタイトルの表示・非表示をトリガーするViewに
titleVisibilityAnchor()修飾子を追加します。このViewが可視領域から外れるとタイトルが表示されます。
- ViewがNavigationStack等でラップされていれば、これだけで機能します。
.navigationTitle()より.scrollAwareTitle()が優先されますが、Navigation History Stack機能のために.navigationTitle()も設定することを推奨します。- 詳細なサンプルはExamplesフォルダのプロジェクトにあります。
import SwiftUI
import CustomNavigationTitle
struct ContentView: View {
var body: some View {
NavigationStack {
ScrollView {
Text("First")
.font(.largeTitle)
.padding()
Text("Second")
.font(.largeTitle)
.padding()
.titleVisibilityAnchor()
Text("Third")
.font(.largeTitle)
.padding()
}
.scrollAwareTitle("CustomTitle")
}
}
}.scrollAwareTitle {
HStack {
Image(systemName: "star.fill")
Text("お気に入り")
}
}MIT ライセンスのもとで提供されます。
Chronos2500 © 2025
