Saya baru-baru ini memperbarui Xcode saya ke 11,4. Ketika saya menjalankan aplikasi di perangkat, saya perhatikan bahwa semua judul item navigasi saya menjadi hitam ketika diatur dari storyboard.
Anda tidak dapat mengubah keduanya dari kode, baris kode berikut tidak berfungsi lagi
self.navigationController?.navigationBar.titleTextAttributes = [.foregroundColor: UIColor.white]
Saya hanya membuatnya berfungsi menggunakan beberapa barang iOS 13 UINavigationBarAppearance
@available(iOS 13.0, *)
private func setupNavigationBar() {
let app = UINavigationBarAppearance()
app.titleTextAttributes = [.foregroundColor: UIColor.white]
app.backgroundColor = Constants.Color.barColor
self.navigationController?.navigationBar.compactAppearance = app
self.navigationController?.navigationBar.standardAppearance = app
self.navigationController?.navigationBar.scrollEdgeAppearance = app
self.navigationController?.navigationBar.titleTextAttributes = [.foregroundColor: UIColor.white]
}
Adakah yang bisa menjelaskan mengapa? Ini adalah bug penting, atau beberapa fitur tersembunyi baru?
ios
swift
xcode
navigationbar
Tudor Popa
sumber
sumber
Jawaban:
Apple akhirnya memperbaikinya dalam versi 11.4.1
https://developer.apple.com/documentation/xcode_release_notes/xcode_11_4_1_release_notes
sumber
Ini memperbaikinya bagi saya, sebagai gantinya menggunakan UINavigationBarAppearance, dari: Menyesuaikan Bilah Navigasi Aplikasi Anda
Catatan: Saya subkelas UINavigationController , dan ini dipanggil dari override viewWillAppear .
... atau untuk AppDelegate , seluruh aplikasi:
... untuk AppDelegate, seluruh aplikasi, di Objective-C:
sumber
UINavigationBarAppearance()
dan tanpa alasan pada Xcode lama kami tidak perlu bergantung padanya, tapi karena Xcode 11.4 harus digunakanUINavigationBarAppearance()
atau Judul warna akan selalu warna Hitam.appearance.largeTitleTextAttributes
untuk judul besar.Di storyboard, untuk Pengontrol Navigasi Anda, ubah "Bar Tint" ke nilai "Default" -nya, lalu pada kode Anda, Anda dapat mengubahnya seperti biasa.
sumber
Tidak yakin apakah itu bug atau tidak.
Cara kami memperbaikinya adalah dengan mengatur "Status Bar Style" ke konten gelap atau terang dalam pengaturan proyek. Ini akan memaksa warna teks Status Bar dengan cara tertentu daripada ditentukan berdasarkan pada perangkat yang berada dalam mode Terang atau Gelap.
Selain itu, Anda perlu mengatur nilai "Lihat tampilan bilah status berbasis pengontrol" menjadi "TIDAK" di Info.plist Anda. tanpa nilai itu "gaya Status Bar" akan diganti.
Selanjutnya buat pengontrol navigasi khusus dan implementasikan di storyboard Anda.
* Warna diatur sehingga Anda dapat melihatnya bekerja dengan jelas.
Saya menemukan itu lebih baik untuk mengatur kode di ViewDidLoad daripada ViewDidAppear karena warna saya tidak diatur pada beban awal, hanya setelah menavigasi kembali dan memuat ulang.
Saya juga menemukan bahwa masalah ini mungkin terkait dengan "Bar Tint" dari NavBar. ketika kami pertama kali mencoba untuk menyelesaikannya, kami mengatur "Bar Tint" ke default dan itu tampaknya menyelesaikan kesalahan juga. Namun, itu membuatnya sehingga kami tidak bisa mendapatkan warna latar belakang NavBar seperti yang kami inginkan. Jadi di storyboard saya, saya memastikan untuk menetapkan nilai ini ke default hanya untuk ukuran yang baik.
Semoga ini bisa membantu
sumber
tidak perlu untuk workaround.it adalah bug di Xcode Interface Builder. Pembaruan rilis Apple untuk Xcode 11.4.1
dari catatan rilis pengembang Apple
https://developer.apple.com/documentation/xcode_release_notes/xcode_11_4_1_release_notes
sumber
Mirip dengan respons Stu Carney pada 3/25, saya menambahkan beberapa detail implementasi lagi.
Buat subkelas dari UINavigationController . Tambahkan yang berikut ini ke viewWillAppear:
Kemudian timpaStatusBarStyle yang disukai :
Jika Anda ingin memperbarui bilah navigasi dan bilah status secara dinamis, seperti dari UISwitch IBAction atau metode pemilih, tambahkan berikut ini:
Juga, pastikan untuk mengatur semua bilah navigasi dan tombol bilah ke warna default di IB. Xcode tampaknya memiliki bug di mana warna IB menimpa warna yang diatur secara terprogram.
sumber
Dalam kasus saya, setelah saya memutakhirkan Xcode dari 11,3 ke 11,4 bug ini terjadi. Jadi saya harus mengubah kode saya untuk meniup untuk mengatur gambar sebagai latar belakang di bilah navigasi.
sumber