Saya tahu cara mengubah UINavigationBar
gambar latar belakang dengan melakukan
[[UINavigationBar appearance] setBackgroundImage:[UIImage imageNamed:@"nabbar"] forBarMetrics:UIBarMetricsDefault];
dan saya tahu bagaimana mengatur bar ke warna yang berbeda di masing-masing Views
..... Sekarang saya ingin mengubah warna latar belakang tanpa menggunakan gambar menjadi warna solid dari app delegate
. Saya tidak ingin mengaturnya setiap kali dari setiap tampilan dan saya tidak ingin menulis CGRect
.
Saya mencoba [[UINavigationBar appearance] setBackgroundColor:[UIColor colorWithRed:33/255.0 green:34/255.0 blue:36/255.0 alpha:1.0]];
tetapi saya tidak berhasil dan saya tidak dapat menemukan kode di mana pun yang berfungsi di delegasi aplikasi.
Adakah yang bisa tolong arahkan saya ke arah yang benar?
sumber
tintColor
gradien akan tetap. Jika Anda tidak ingin memiliki gradien ini, Anda perlu membuat subkelas UINavigationBar ATAU membuat UIImage untuk tampilan tersebut.navigationBar.barTintColor = myColor;
translucent
properti tidak dapat diatur menggunakan UIApearance di iOS 6 dan iOS 7. Jadi[[UINavigationBar appearance] setTranslucent:NO]
akan merusak aplikasi denganNSInvalidArgumentException
kesalahan. Gunakan[self.navigationController.navigationBar setTranslucent:NO]
atau batalkan pilihan transparansi menggunakan IB.UINavigationBar.appearance().barTintColor = myColor
UINavigationBar.appearance().isTranslucent = false
Untuk mengubah warna latar belakang dan bukan warna, potongan kode berikut akan berfungsi:
[self.navigationController.navigationBar setBarTintColor:[UIColor greenColor]]; [self.navigationController.navigationBar setTranslucent:NO];
sumber
UIViewControllers
, sementara yang ini akan menunjukkan efek setiap kali dipanggil.Untuk melakukan ini di iOS 7:
[[UINavigationBar appearance] setBarTintColor:myColor];
sumber
Sintaks cepat:
UINavigationBar.appearance().barTintColor = UIColor.whiteColor() //changes the Bar Tint Color
Saya baru saja meletakkannya di AppDelegate didFinishLaunchingWithOptions dan itu tetap ada di seluruh aplikasi
sumber
Swift :
self.navigationController?.navigationBar.barTintColor = UIColor.red self.navigationController?.navigationBar.isTranslucent = false
sumber
Anda dapat dengan mudah melakukan ini dengan Xcode 6.3.1. Pilih NavigationBar Anda di kerangka Dokumen. Pilih Attributes Inspector. Hapus centang Translucent. Atur Bar Tint ke warna yang Anda inginkan. Selesai!
sumber
Seperti yang disebutkan dalam jawaban lain, Anda dapat menggunakan
setTintColor:
, tetapi Anda menginginkan warna yang solid dan tidak mungkin melakukan pengaturan AFAIK warna tint.Solusinya adalah membuat gambar secara terprogram dan menetapkan gambar itu sebagai gambar latar belakang untuk semua bilah navigasi melalui
UIAppearance
. Tentang ukuran gambar, saya tidak yakin apakah gambar 1x1 piksel akan berfungsi atau apakah Anda memerlukan ukuran yang tepat dari bilah navigasi Periksa jawaban kedua dari pertanyaan ini untuk melihat cara membuat gambar.Sebagai saran, saya tidak suka "membebani" delegasi aplikasi dengan hal-hal semacam ini. Yang cenderung saya lakukan adalah membuat kelas bernama
AppearanceConfiguration
hanya dengan satu metode publik diconfigureAppearance
mana saya mengatur semua hal-hal UIApearance yang saya inginkan, dan kemudian saya memanggil metode itu dari delegasi aplikasi.sumber
Anda dapat menyetel warna Latar Belakang UINavigasi dengan menggunakan kode ini di pengontrol tampilan mana pun
self.navigationController.navigationBar.backgroundColor = [UIColor colorWithRed:10.0f/255.0f green:30.0f/255.0f blue:200.0f/255.0f alpha:1.0f];
sumber
Di Swift 4.2 dan Xcode 10.1
Anda dapat mengubah warna bilah navigasi dari AppDelegate langsung ke seluruh proyek Anda.
Di
didFinishLaunchingWithOptions launchOptions:
tulis di bawah ini ke baris kodeUINavigationBar.appearance().tintColor = UIColor.white UINavigationBar.appearance().barTintColor = UIColor(red: 2/255, green: 96/255, blue: 130/255, alpha: 1.0)
Sini
tintColor adalah untuk mengatur gambar latar belakang seperti tombol kembali & gambar garis menu dll (Lihat gambar menu kiri dan kanan di bawah)
barTintColor adalah untuk warna latar belakang bilah navigasi
Jika Anda ingin menyetel warna bilah navigasi pengontrol tampilan tertentu, tulis kode di bawah ini di
viewDidLoad()
//Add navigation bar colour navigationController?.navigationBar.barTintColor = UIColor(red: 2/255, green: 96/255, blue: 130/255, alpha: 1.0) navigationController?.navigationBar.tintColor = UIColor.white
sumber
Kode warna menjadi masalah di sini. Alih-alih menggunakan 195/255, gunakan 0.7647 atau 195.f / 255.f Masalahnya adalah mengonversi float tidak berfungsi dengan benar. Coba gunakan nilai float yang tepat.
sumber