0

私の要件は、私のアプリには2つのフローがあるため、両方のフローでpreferredStatusBarStyleの値とStatusBarの背景色が異なります。したがって、 40 がある場合viewControllers、20 個の VC は同じ値を持ち、20 個の VC は最初の 20 個の値とは異なる値を持ちます。

今のところ、次のように、各ビュー コントローラーの値を変更しています。

override var preferredStatusBarStyle: UIStatusBarStyle {
    return .lightContent
}

override func viewDidLoad() {
    super.viewDidLoad()

    UIApplication.shared.statusBarView?.backgroundColor = AppColors.themeStatusColor
}

そしてinfo.plistで私はこれをしました:-

<key>UIViewControllerBasedStatusBarAppearance</key>
<true/>

これらのコード行を 2 か所だけ記述して、要件を達成できるように、どうにかして教えてもらえますか。

4

3 に答える 3

1

以下のように 2 つの ViewController を作成することで、これを実現できます。

// 青色のステータス バーで 20 VC の場合

class BaseVCBlue: UIViewController {

override var preferredStatusBarStyle: UIStatusBarStyle {
    return .lightContent
}

 override func viewDidLoad() {
        super.viewDidLoad()

    UIApplication.shared.statusBarView?.backgroundColor = UIColor.blue
    }

// 赤のステータス バーで 20 VC の場合

class BaseVCRed: UIViewController {

override var preferredStatusBarStyle: UIStatusBarStyle {
    return .lightContent
}

 override func viewDidLoad() {
        super.viewDidLoad()

    UIApplication.shared.statusBarView?.backgroundColor = UIColor.red
    }

青のステータスバーが必要な場合は青を拡張し、赤が必要な場合は赤を拡張します。

于 2018-10-11T05:50:48.390 に答える