Saya menggunakan Tampilan Pemilih untuk memungkinkan pengguna memilih tema warna untuk seluruh aplikasi.
Saya berencana mengubah warna bilah navigasi, latar belakang dan mungkin bilah tab (jika memungkinkan).
Saya telah meneliti bagaimana melakukan ini tetapi tidak dapat menemukan contoh Swift. Adakah yang bisa memberi saya contoh kode yang perlu saya gunakan untuk mengubah warna bilah navigasi dan warna teks bilah navigasi?
Tampilan Picker diatur, saya hanya mencari kode untuk mengubah warna UI.
sumber
Berikut adalah beberapa penyesuaian tampilan yang sangat mendasar yang dapat Anda terapkan di seluruh aplikasi:
Lebih lanjut tentang
UIAppearance
API di Swift dapat Anda baca di sini: https://developer.apple.com/documentation/uikit/uiappearancesumber
Diperbarui untuk Swift 3, 4, 4.2, 5+
Cepat 4
Swift 4.2, 5+
Juga dapat memeriksa di sini: https://github.com/hasnine/iOSUtilitiesSource
sumber
Cukup tempelkan baris ini ke
didFinishLaunchingWithOptions
dalam kode Anda.sumber
Di dalam AppDelegate , ini telah secara global mengubah format NavBar dan menghapus garis bawah / perbatasan (yang merupakan area masalah bagi kebanyakan orang) untuk memberi Anda apa yang saya pikir Anda dan orang lain cari:
Kemudian Anda dapat mengatur file Constants.swift , dan berisi adalah struct Gaya dengan warna dan font dll. Anda kemudian dapat menambahkan tableView / pickerView ke ViewController dan menggunakan array "availableThemes" untuk memungkinkan pengguna mengubah themeColor.
Hal yang indah tentang ini adalah Anda dapat menggunakan satu referensi di seluruh aplikasi Anda untuk setiap warna dan itu akan diperbarui berdasarkan "Tema" yang dipilih pengguna dan tanpa satu itu default ke theme1 ():
sumber
Untuk melakukan ini di storyboard (Interface Builder Inspector)
Dengan bantuan
IBDesignable
, kami dapat menambahkan lebih banyak opsi ke Interface Builder Inspector untukUINavigationController
dan men-tweak mereka di storyboard. Pertama, tambahkan kode berikut ke proyek Anda.Kemudian cukup atur atribut untuk pengontrol navigasi di storyboard.
Pendekatan ini juga dapat digunakan untuk mengelola warna teks bilah navigasi dari storyboard:
sumber
Swift 4:
Kode yang berfungsi sempurna untuk mengubah tampilan bilah navigasi di tingkat aplikasi.
Selamat Coding!
sumber
bekerja untukku
sumber
SWIFT 4 - Transisi mulus (solusi terbaik):
Jika Anda kembali dari pengontrol navigasi dan Anda harus mengatur warna yang berbeda pada pengontrol navigasi yang Anda dorong dari yang ingin Anda gunakan
alih-alih meletakkannya di viewWillAppear sehingga transisinya lebih bersih.
SWIFT 4.2
sumber
Dalam Swift 4
Anda dapat mengubah warna bilah navigasi. Cukup gunakan potongan kode di bawah ini
viewDidLoad()
Warna Bilah Navigasi
Bilah Navigasi Warna Teks
Untuk iOS 11 Navigasi Judul Besar , Anda perlu menggunakan
largeTitleTextAttributes
propertisumber
The
appearance()
fungsi tidak selalu bekerja untuk saya. Jadi saya lebih suka membuat objek NC dan mengubah atributnya.Juga jika Anda ingin menambahkan gambar, bukan hanya teks, itu berfungsi juga
sumber
Gunakan API penampilan, dan warna barTintColor.
sumber
iOS 8 (cepat)
sumber
Jika Anda memiliki pengontrol navigasi khusus, Anda dapat menggunakan potongan kode di atas. Jadi dalam kasus saya, saya telah menggunakan potongan kode sebagai berikut.
Swift 3.0, versi XCode 8.1
Teks Bilah Navigasi:
Pembicaraan ini sangat membantu.
sumber
Pembaruan Swift 4, iOS 12 dan Xcode 10
Cukup masukkan satu baris di dalamnya
viewDidLoad()
sumber
Dalam Swift 2
Untuk mengubah warna di bilah navigasi,
Untuk mengubah warna di bilah navigasi item,
atau
sumber
Cepat 3
Ini akan mengatur warna bilah navigasi Anda seperti warna bilah Facebook :)
sumber
Swift 3 dan Swift 4 Compatible Xcode 9
Solusi yang lebih baik untuk membuat Kelas untuk bilah Navigasi umum
Saya memiliki 5 Pengendali dan setiap judul pengontrol diubah ke warna oranye. Karena setiap pengontrol memiliki 5 pengontrol navigasi, maka saya harus mengubah setiap warna baik dari inspektur atau dari kode.
Jadi saya membuat kelas alih-alih mengubah setiap satu bilah Navigasi dari kode saya hanya menetapkan kelas ini dan itu bekerja pada semua 5 controller Kode menggunakan kembali Kemampuan. Anda hanya perlu menetapkan kelas ini untuk Setiap controller dan hanya itu.
sumber
iOS 10 Swift 3.0
Jika Anda tidak keberatan menggunakan kerangka kerja cepat maka kami UINeraida untuk mengubah latar belakang navigasi sebagai
UIColor
atauHexColor
atauUIImage
dan mengubah teks tombol navigasi kembali secara terprogram, mengubah warna teks lengkap forground.Untuk
UINavigationBar
sumber
Cepat 3
Satu liner sederhana yang bisa Anda gunakan
ViewDidLoad()
sumber
Versi ini juga menghapus garis bayangan 1px di bawah bilah navigasi:
Swift 5: Taruh ini di AppDelegate Anda didFinishLaunchingWithOptions
sumber
saya harus melakukan
jika tidak, warna latar tidak akan berubah
sumber
Pertama atur properti isTranslucent dari navigationBar ke false untuk mendapatkan warna yang diinginkan. Kemudian ubah warna navigasiBar seperti ini:
sumber
Pastikan untuk mengatur Status Tombol untuk .normal
PS iOS 12, Xcode 10.1
sumber
topItem
solusi ini . Ini membuat frustrasi jumlah perubahan yang terus dilakukan oleh Apple tentang bagaimana gaya diterapkan pada navigasi.cukup panggil ekstensi ini dan berikan warna itu secara otomatis akan mengubah warna nav bar
di tampilan didload atau di view akan muncul panggilan
self.navigationController? .setNavigationBarColor (warna: <# T ## UIColor #>)
sumber
sumber
Saya menulis ini untuk mereka yang masih memiliki masalah dengan solusi di sini.
Saya menggunakan Xcode Versi 11.4 (11E146). Yang bekerja untuk saya adalah:
TETAPI !, jika Anda mengatur barTintColor di storyboard ke nilai lain selain "default" 2 baris kode ini tidak akan berpengaruh.
Jadi, berhati-hatilah dan atur kembali ke barTintColor default di Storyboard. Oh apel ...
sumber
Tambahkan baris ini ke dalam AppDelegate Anda di dalam fungsi didFinishLaunchingWithOptions:
baris ini untuk latar belakang bilah navigasi Anda.
baris ini adalah jika Anda tidak isTranslucent to false itu akan menunjukkan warna putih pada navigasi.
baris ini untuk teks dan ikon Anda di bilah navigasi
baris ini kami untuk turunkan semuanya ke bilah navigasi Anda.
sumber