Mobile Development 13 min read

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.

Snowball Engineer Team
Snowball Engineer Team
Snowball Engineer Team
Adapting iOS 15 UI Changes: UINavigationBar, UITabBar, UITableView Issues and Solutions

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.

MobileDevelopmentpromotionUIKitNavigationBarWWDCiOS15UITableView
Snowball Engineer Team
Written by

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.

0 followers
Reader feedback

How this landed with the community

login Sign in to like

Rate this article

Was this worth your time?

Sign in to rate
Discussion

0 Comments

Thoughtful readers leave field notes, pushback, and hard-won operational detail here.