iOS15 有导航栏的控制器状态栏文字颜色无法变为白色

答案来自:https://stackoverflow.com/questions/69404806/ios-specify-status-bar-text-color-when-using-uinavigationbarappearance-now-bars?r=SearchResults

1. info.plist文件添加键值View controller-based status bar appearance,设为YES

2. 自定义UINavigationController,重写preferredStatusBarStyle属性

    override var preferredStatusBarStyle: UIStatusBarStyle{

            return self.topViewController?.preferredStatusBarStyle ?? .lightContent

    }

3.在需要将状态栏文字设置成白色的controller中设置(注意顺序不能变,只设置任意一项都是无效的):

        override var preferredStatusBarStyle: UIStatusBarStyle{

                return .lightContent

        }

        self.navigationController?.navigationBar.overrideUserInterfaceStyle = .dark

        self.navigationController?.navigationBar.barStyle = .black

如果将导航栏隐藏了,则只需重写需要将状态栏文字设为白色的控制器的preferredStatusBarStyle属性

        override var preferredStatusBarStyle: UIStatusBarStyle{

                return .lightContent

        }

你可能感兴趣的:(iOS15 有导航栏的控制器状态栏文字颜色无法变为白色)