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

View File

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