Tab Bar Load Animation
Nucleic-Session: EEC60FAE-8368-49CA-9202-7026C12E7F8C Co-authored-by: Nucleic <[email protected]>
This commit is contained in:
@@ -120,12 +120,27 @@ struct CompactRootView: View {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/// A preference carrying the floating bar's measured height up to `CompactRootView`, which feeds it
|
/// A preference carrying the floating bar's measured height up to `CompactRootView`, which feeds it
|
||||||
/// back into the bottom safe-area inset so content sits exactly above the bar.
|
/// back into each tab's bottom inset so content sits exactly above the bar.
|
||||||
private struct BarHeightKey: PreferenceKey {
|
private struct BarHeightKey: PreferenceKey {
|
||||||
static var defaultValue: CGFloat = 72
|
static var defaultValue: CGFloat = 72
|
||||||
static func reduce(value: inout CGFloat, nextValue: () -> CGFloat) { value = nextValue() }
|
static func reduce(value: inout CGFloat, nextValue: () -> CGFloat) { value = nextValue() }
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// Per-tab chrome for the compact shell: suppress the system tab bar (we draw our own) and reserve
|
||||||
|
/// `height` at the bottom of this tab's content so its scroll view lays out above the floating bar.
|
||||||
|
/// Applied to each tab rather than the `TabView`, whose container-level inset doesn't reach the tab
|
||||||
|
/// pages' scroll content.
|
||||||
|
private struct TabBarInset: ViewModifier {
|
||||||
|
let height: CGFloat
|
||||||
|
func body(content: Content) -> some View {
|
||||||
|
content
|
||||||
|
.toolbar(.hidden, for: .tabBar)
|
||||||
|
.safeAreaInset(edge: .bottom, spacing: 0) {
|
||||||
|
Color.clear.frame(height: height)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/// Our own bottom tab bar for the compact shell — a floating Liquid Glass capsule of four items
|
/// Our own bottom tab bar for the compact shell — a floating Liquid Glass capsule of four items
|
||||||
/// (Home, Sessions, Projects, Settings), standing in for the system tab bar so `CompactRootView`
|
/// (Home, Sessions, Projects, Settings), standing in for the system tab bar so `CompactRootView`
|
||||||
/// can animate its visibility itself (see that view for why) while keeping the iOS 26 floating-glass
|
/// can animate its visibility itself (see that view for why) while keeping the iOS 26 floating-glass
|
||||||
|
|||||||
Reference in New Issue
Block a user