SamuKata
kavsoft
kavsoft

patreon


Recreating iOS 26 Tab Bar Using SwiftUI (Without Liquid Glass) | Supports iOS 16.4+ | Xcode

Hello Guys ðŸ–ðŸ–🖠In this video, I’ll show you how to recreate new iOS 26 Tab Bar with Expandable Search Bar Using SwiftUI which supports iO

Hello Guys ðŸ–ðŸ–ðŸ–

In this video, I’ll show you how to recreate new iOS 26 Tab Bar with Expandable Search Bar Using SwiftUI which supports iOS 16.4 Devices.

YouTube Video: https://youtu.be/pmsi5qYPWrY

Download Code 👇

Recreating iOS 26 Tab Bar Using SwiftUI (Without Liquid Glass) | Supports iOS 16.4+ | Xcode

Comments

Ok I figured it out only way to make this work globally is using .toolbar(content: { ToolbarItem(placement: .bottomBar) { TabView() } }) But there is catch, since this is attached outside of NavigationStack .toolbarBackground(.hidden, for: .bottomBar) doesn't work, so I had to reach to UIKit to make background invisible let appearance = UIToolbarAppearance() appearance.configureWithTransparentBackground() // removes blur & color appearance.backgroundColor = .clear // keep it fully clear appearance.shadowColor = .clear // drop top hair‑line UIToolbar.appearance().standardAppearance = appearance // regular UIToolbar.appearance().scrollEdgeAppearance = appearance // when scrolled UIToolbar.appearance().compactAppearance = appearance Hope this helps someone, now whole app is aware and lets scroll content above TabView

Miroslav Djukic

Is there clean way to incorporate this into app that might have complex UI hierarchy lot of NavigationStack views in each "Tab" option so that it doesn't hide content (when scrolling to the bottom). Only way I can think of is using VStack and placing TabBar at the bottom but then we don't have nice scrolling behind it, I tried also .safeAreaInset(edge: .bottom) { } But that also doesn't work since Tab destination views are all wrapped in own NavigationStack or NavigationSplitView containers

Miroslav Djukic

When conditionally showing/hiding the search bar, the indicator's offset is displayed incorrectly because the offset is applied before the active tab switches, causing a width mismatch. Is there a good solution for this?

thurman tsao


More Creators