Adapting iOS 15 UI Changes: UINavigationBar, UITabBar, UITableView Issues and Solutions
This article reviews common iOS 15 UI adaptation problems—including UINavigationBar/UITabBar appearance, increased UITableView section header height, cell flickering caused by prefetching, and ProMotion refresh rate support—explains their underlying reasons, and provides concrete code solutions for developers using Xcode 13.
Since iOS 15 was released, the Snowball iOS team encountered several UI issues while adapting their app and documented the problems and fixes, referencing relevant WWDC 2021 sessions.
UINavigationBar & UITabBar Appearance Issues
In iOS 15 the background of UITabBar and UINavigationBar becomes semi‑transparent when a scroll view reaches the edge. The new scrollEdgeAppearance property (available from iOS 15 for UITabBar and from iOS 13 for UINavigationBar ) controls this behavior.
/// Describes the appearance attributes for the tabBar to use when an observable scroll view is scrolled to the bottom.
@property(nonatomic, readwrite, copy, nullable) UITabBarAppearance *scrollEdgeAppearance UI_APPEARANCE_SELECTOR API_AVAILABLE(ios(15.0));Setting the same UITabBarAppearance and UINavigationBarAppearance for both standardAppearance and scrollEdgeAppearance restores the original solid colors.
// Custom scrollEdgeAppearance
let appearance = UITabBarAppearance()
appearance.backgroundEffect = nil
appearance.backgroundColor = .blue
tabBar.scrollEdgeAppearance = appearance
// Specify the content scrollView
let scrollView = ... // Content scroll view in your app
viewController.setContentScrollView(scrollView, for: .bottom)UITableView Section Header Height Increase
iOS 15 introduces the sectionHeaderTopPadding property, which adds default padding above each section header, causing the headers to appear taller.
/// Padding above each section header. The default value is `UITableViewAutomaticDimension`.
@property(nonatomic) CGFloat sectionHeaderTopPadding API_AVAILABLE(ios(15.0), tvos(15.0), watchos(8.0));To remove the extra padding globally:
if (@available(iOS 15.0, *)) {
[[UITableView appearance] setSectionHeaderTopPadding:CGFLOAT_MIN];
}UITableView Scrolling Flicker
Feed‑list cells flickered because iOS 15 enables Cell prefetching by default. When a heavy cell is prefetched and later reused after a reload, its content is redrawn, causing visible flashes. Disabling prefetchingEnabled or adjusting asynchronous drawing eliminated the flicker.
@property(nonatomic, getter=isPrefetchingEnabled) BOOL prefetchingEnabled API_AVAILABLE(ios(15.0), tvos(15.0), watchos(8.0));For CALayer‑based color changes, implicit animations must be disabled:
[CATransaction begin];
[CATransaction setDisableActions:YES];
layer.backgroundColor = bgColor.CGColor;
[CATransaction commit];ProMotion Displays
iPhone 13 Pro/Pro Max and iPad Pro support dynamic refresh rates up to 120 Hz. To enable the higher rate, add the following key to Info.plist :
<key>CADisableMinimumFrameDurationOnPhone</key><true/>Conclusion
The Snowball iOS team’s experience shows how to address iOS 15 UI changes—appearance adjustments, header padding, cell prefetching side effects, and ProMotion support—by applying the appropriate UIKit properties and code snippets.
References
What's new in UIKit – WWDC 2021: https://developer.apple.com/videos/play/wwdc2021/10059/
Make blazing fast lists and collection views – WWDC 2021: https://developer.apple.com/videos/play/wwdc2021/10252/
Optimizing ProMotion Refresh Rates – Apple Documentation: https://developer.apple.com/documentation/quartzcore/optimizing_promotion_refresh_rates_for_iphone_13_pro_and_ipad_pro/
Recruitment Note
The Snowball team is hiring iOS, Android, FE, Java, testing, and operations engineers. Interested candidates can view the original article for job links.
Snowball Engineer Team
Proactivity, efficiency, professionalism, and empathy are the core values of the Snowball Engineer Team; curiosity, passion, and sharing of technology drive their continuous progress.
How this landed with the community
Was this worth your time?
0 Comments
Thoughtful readers leave field notes, pushback, and hard-won operational detail here.