Saya sudah memiliki tema terang dan gelap di aplikasi saya. Saya juga mendukung mode gelap iOS 13, masalahnya adalah, bahkan ketika mode terang atau gelap aplikasi dipilih, mengubah tema iOS menyebabkan perubahan warna bilah status, jadi ketika mode gelap ios aktif, bilah status tidak terlihat di tema ringan di aplikasi saya. Saya mencoba mencegahnya dengan blok kode ini, tetapi tidak berhasil dalam kasus saya:

override var preferredStatusBarStyle: UIStatusBarStyle {
    switch Appearance.theme {
    case .dark:
        return .lightContent
    case .light:
        if #available(iOS 13.0, *) {
            return .darkContent
        } else {
            return .default
        }
    case .apple:
        return .default
    }
}

Saya menambahkannya di dia membagi pengontrol tampilan, saya juga menambahkannya di setiap pengontrol tetapi tidak ada yang berubah. Apakah ada yang tahu bagaimana cara memperbaikinya? Saya juga memiliki masalah yang sama untuk UITabbar dan UISegmentedControl

Entah bagaimana saya harus mengatakan bahwa ketika mode terang dan gelap di aplikasi saya dipilih, mengubah tema iOS akan berpengaruh pada elemen aplikasi (bilah status, tabbar, UISegmentedControl)

Terimakasih banyak

7
Robert 21 September 2019, 00:29

1 menjawab

Jawaban Terbaik

Anda dapat menggunakan overrideUserInterfaceStyle untuk memaksa pengontrol mengadopsi gaya tertentu di iOS13.

Untuk mengatasi masalah Anda, kode Anda harus seperti itu:

override var preferredStatusBarStyle: UIStatusBarStyle {
    switch Appearance.theme {
    case .dark:
        return .lightContent
    case .light:
        if #available(iOS 13.0, *) {
            return .darkContent
        } else {
            return .default
        }
    case .apple:
        return .default
    }
}


override func viewWillAppear(_ animated: Bool) {
    super.viewWillAppear(animated)
    if #available(iOS 13.0, *) {
         switch Appearance.theme {
         case .dark:
             overrideUserInterfaceStyle = .dark
         case .light:
             overrideUserInterfaceStyle = .light
         case .apple:
             overrideUserInterfaceStyle = .unspecified
         }
     }
}
3
Rouzbeh 20 Mei 2020, 13:11