Adopts automatic status bar tinting on iOS 17 for App + Source detail screens

This commit is contained in:
Riley Testut
2023-12-07 16:50:31 -06:00
committed by Magesh K
parent 3773a051ab
commit be31611cb7
2 changed files with 34 additions and 6 deletions

View File

@@ -48,7 +48,15 @@ final class AppViewController: UIViewController
private var _preferredStatusBarStyle: UIStatusBarStyle = .default
override var preferredStatusBarStyle: UIStatusBarStyle {
return _preferredStatusBarStyle
if #available(iOS 17, *)
{
// On iOS 17+, .default will update the status bar automatically.
return .default
}
else
{
return _preferredStatusBarStyle
}
}
override func viewDidLoad()
@@ -389,7 +397,10 @@ private extension AppViewController
self._preferredStatusBarStyle = .default
}
self.navigationController?.setNeedsStatusBarAppearanceUpdate()
if #unavailable(iOS 17)
{
self.navigationController?.setNeedsStatusBarAppearanceUpdate()
}
}
func hideNavigationBar()
@@ -402,7 +413,10 @@ private extension AppViewController
self._preferredStatusBarStyle = .lightContent
self.navigationController?.setNeedsStatusBarAppearanceUpdate()
if #unavailable(iOS 17)
{
self.navigationController?.setNeedsStatusBarAppearanceUpdate()
}
}
// Copied from HeaderContentViewController

View File

@@ -65,7 +65,15 @@ class HeaderContentViewController<Header: UIView, Content: ScrollableContentView
}
override var preferredStatusBarStyle: UIStatusBarStyle {
return _preferredStatusBarStyle
if #available(iOS 17, *)
{
// On iOS 17+, .default will update the status bar automatically.
return .default
}
else
{
return _preferredStatusBarStyle
}
}
private var _preferredStatusBarStyle: UIStatusBarStyle = .default
@@ -478,7 +486,10 @@ private extension HeaderContentViewController
self._preferredStatusBarStyle = .default
}
self.navigationController?.setNeedsStatusBarAppearanceUpdate()
if #unavailable(iOS 17)
{
self.navigationController?.setNeedsStatusBarAppearanceUpdate()
}
}
func hideNavigationBar()
@@ -491,7 +502,10 @@ private extension HeaderContentViewController
self._preferredStatusBarStyle = .lightContent
self.navigationController?.setNeedsStatusBarAppearanceUpdate()
if #unavailable(iOS 17)
{
self.navigationController?.setNeedsStatusBarAppearanceUpdate()
}
}
func updateNavigationBarAppearance(isHidden: Bool)