Tampaknya warna judul Bar Navigasi iOS adalah putih secara default. Apakah ada cara untuk mengubahnya ke warna yang berbeda?
Saya menyadari navigationItem.titleView
pendekatan menggunakan gambar. Karena keterampilan desain saya terbatas dan saya gagal mendapatkan glossy standar, saya lebih suka mengubah warna teks.
Wawasan apa pun akan sangat dihargai.
ios
uinavigationbar
navigationitem
Callum
sumber
sumber
Jawaban:
Pendekatan modern
Cara modern, untuk seluruh pengontrol navigasi ... lakukan ini satu kali, ketika tampilan root pengontrol navigasi Anda dimuat.
Namun, ini tampaknya tidak berpengaruh dalam pandangan selanjutnya.
Pendekatan klasik
Cara lama, per view controller (konstanta ini untuk iOS 6, tetapi jika ingin melakukannya per view controller pada tampilan iOS 7 Anda akan menginginkan pendekatan yang sama tetapi dengan konstanta yang berbeda):
Anda perlu menggunakan
UILabel
sebagaititleView
darinavigationItem
.Label harus:
label.backgroundColor = [UIColor clearColor]
).label.font = [UIFont boldSystemFontOfSize: 20.0f]
).label.shadowColor = [UIColor colorWithWhite:0.0 alpha:0.5]
).label.textAlignment = NSTextAlignmentCenter
(UITextAlignmentCenter
untuk SDK yang lebih lama).Atur warna teks label menjadi warna kustom apa pun yang Anda inginkan. Anda memang menginginkan warna yang tidak menyebabkan teks berbaur menjadi bayangan, yang akan sulit dibaca.
Saya mengerjakan ini melalui coba-coba, tetapi nilai-nilai yang saya hasilkan pada akhirnya terlalu sederhana bagi mereka untuk tidak menjadi apa yang Apple pilih. :)
Jika Anda ingin memverifikasi ini, drop kode ini ke
initWithNibName:bundle:
dalamPageThreeViewController.m
dari Apple sampel NavBar . Ini akan mengganti teks dengan label kuning. Ini harus dibedakan dari yang asli yang diproduksi oleh kode Apple, kecuali untuk warna.Sunting: Juga, baca jawaban Erik B di bawah ini. Kode saya menunjukkan efeknya, tetapi kodenya menawarkan cara yang lebih sederhana untuk menempatkan ini pada pengontrol tampilan yang ada.
sumber
sizeWithFont:
, itu secara ajaib akan mengambil perilaku penyelarasan otomatis dari label standar.Saya tahu ini adalah utas yang cukup lama, tetapi saya pikir akan berguna untuk mengetahui bagi pengguna baru bahwa iOS 5 membawa properti baru untuk membangun properti judul.
Anda dapat menggunakan UINavigationBar
setTitleTextAttributes
untuk mengatur font, warna, offset, dan warna bayangan.Selain itu Anda dapat mengatur Atribut Teks Judul UINavigationBar default yang sama untuk semua
UINavigationBars
aplikasi Anda.Misalnya seperti ini:
sumber
Di iOS 5 Anda dapat mengubah warna judul navigationBar dengan cara ini:
sumber
UITextAttributeTextColor
keNSForegroundColorAttributeName
. Bekerja seperti pesona!self.navigationController.navigationBar.tintColor
tidak berhasil untuk saya. Ini benar.Berdasarkan jawaban Steven Fisher saya menulis kode ini:
Keuntungan dari kode ini, selain berurusan dengan frame dengan benar, adalah bahwa jika Anda mengubah judul controller Anda, tampilan judul kustom juga akan diperbarui. Tidak perlu memperbaruinya secara manual.
Keuntungan besar lainnya adalah membuatnya sangat mudah untuk mengaktifkan warna judul khusus. Yang perlu Anda lakukan adalah menambahkan metode ini ke controller.
sumber
Sebagian besar saran di atas sudah usang sekarang, untuk penggunaan iOS 7 -
Juga, checkout NSAttributedString.h untuk berbagai properti teks yang dapat diatur.
sumber
Di iOS 7 dan 8, Anda dapat mengubah warna Judul menjadi hijau
sumber
self.navigationController!.navigationBar.titleTextAttributes = NSDictionary(object: UIColor.whiteColor(), forKey: NSForegroundColorAttributeName) as [NSObject : AnyObject]
self.navigationController!.navigationBar.titleTextAttributes = [NSForegroundColorAttributeName: UIColor.whiteColor()]
Agar pertanyaan tetap mutakhir, saya akan menambahkan solusi Alex RR , tetapi di Swift :
Yang menghasilkan:
sumber
Metode 1 , atur dalam IB:
Metode 2 , satu baris kode:
sumber
titleTextAttributes
hanyaSolusi oleh tewha bekerja dengan baik jika Anda mencoba mengubah warna pada sebuah halaman, tetapi saya ingin dapat mengubah warna pada setiap halaman. Saya membuat beberapa modifikasi kecil sehingga itu akan berfungsi untuk semua halaman di a
UINavigationController
NavigationDelegate.h
NavigasiDelegasikan.m
sumber
Dari iOS 5 dan seterusnya kita harus mengatur warna teks judul dan font dari bilah navigasi menggunakan titleTextAttribute Kamus (kamus yang telah ditentukan dalam referensi kelas pengontrol navigasi UInavigation).
sumber
Versi Swift
Saya menemukan sebagian besar dari kalian menyajikan jawaban dari versi Objective_C
Saya ingin mengimplementasikan fungsi ini dengan menggunakan Swift untuk siapa saja yang membutuhkannya.
Di ViewDidload
1.Untuk menjadikan latar belakang NavigationBar menjadi warna (misalnya: BIRU)
2.Untuk menjadikan latar belakang NavigationBar menjadi Gambar (misalnya: ABC.png)
3.Untuk mengubah judul NavigationBar (misalnya: [Font: Futura, 10] [Warna: Merah])
Saya harap saya bisa membantu!: D
sumber
Gunakan kode di bawah ini dalam viewDidLoad controller tampilan atau metode viewWillAppear.
sumber
Pendek dan manis.
sumber
Ini solusi saya berdasarkan Stevens
Satu-satunya perbedaan nyata adalah saya menempatkan beberapa penanganan untuk menyesuaikan posisi jika tergantung pada panjang teks, tampaknya mirip dengan bagaimana apel melakukannya
Anda mungkin ingin menyesuaikan nilai 10 tergantung pada ukuran font Anda
sumber
Saya mengalami masalah dengan tombol nav saya membuang teks keluar dari pusat (ketika Anda hanya memiliki satu tombol). Untuk memperbaikinya saya baru saja mengubah ukuran bingkai saya seperti ini:
sumber
Saya telah menyesuaikan gambar latar belakang navigationBar dan item tombol kiri, dan judul abu-abu tidak sesuai dengan latar belakang. Maka saya menggunakan:
untuk mengubah warna rona menjadi abu-abu. Dan judulnya putih sekarang! Itu yang saya mau.
Semoga membantu juga :)
sumber
Dianjurkan untuk menetapkan self.title karena ini digunakan saat mendorong navbars anak atau menampilkan judul pada tabbars.
sumber
Ini adalah utas yang cukup lama tetapi saya berpikir untuk memberikan jawaban untuk pengaturan Warna, Ukuran dan Posisi Vertikal Judul Navigasi untuk iOS 7 ke atas
Untuk Warna dan Ukuran
Untuk Posisi Vertikal
Tetapkan Judul dan tetapkan kamus atribut
sumber
Ini bekerja untuk saya di Swift:
sumber
navigationController?.navigationBar.titleTextAttributes = { if let currentAttributes = navigationController?.navigationBar.titleTextAttributes { var newAttributes = currentAttributes newAttributes[NSForegroundColorAttributeName] = navigationTintColor return newAttributes } else { return [NSForegroundColorAttributeName: navigationTintColor]}}()
self.navigationController.navigationBar.titleTextAttributes = @{NSForegroundColorAttributeName : UIColor.redColor};
Versi Swift 4 & 4.2:
sumber
sumber
untuk mengatur ukuran font judul saya telah menggunakan kondisi berikut .. mungkin bermanfaat bagi siapa pun
sumber
Pembaruan untuk posting Alex RR menggunakan atribut teks iOS 7 baru dan tujuan modern c untuk mengurangi noise:
sumber
Saya percaya cara yang tepat untuk mengatur warna
UINavigationBar
adalah:Kode di atas ditulis adalah subclass on
UINavigationBar
, jelas berfungsi tanpa subclass juga.sumber
[UINavigationBar appearance]
dan mengatur atribut teks judul di sana (mempertimbangkan tipu daya yang terlibat dalam subklasifikasiUINavigationBar
, solusi yang lebih disukai).Gunakan seperti ini untuk dukungan Orientation
sumber
Ini adalah salah satu hal yang hilang. Taruhan terbaik Anda adalah membuat Bilah Navigasi kustom Anda sendiri, menambahkan kotak teks, dan memanipulasi warna dengan cara itu.
sumber
Setelah menemukan masalah yang sama (seperti yang lain) dari label yang bergerak ketika kita memasukkan tombol di navBar (dalam kasus saya, saya punya pemintal yang saya ganti dengan tombol ketika tanggal dimuat), solusi di atas tidak bekerja bagi saya, jadi inilah yang bekerja dan menyimpan label di tempat yang sama sepanjang waktu:
sumber
Anda harus memanggil [label sizeToFit]; setelah mengatur teks untuk mencegah offset aneh ketika label diposisikan ulang secara otomatis dalam tampilan judul ketika tombol lain menempati bilah navigasi.
sumber
Dapat menggunakan metode ini dalam file appdelegate dan dapat digunakan di setiap tampilan
sumber
titleTextAttributes Menampilkan atribut untuk teks judul bilah.
@ properti (non-atomik, salin) NSDictionary * titleTextAttributes Diskusi Anda dapat menentukan font, warna teks, warna bayangan teks, dan offset bayangan teks untuk judul dalam kamus atribut teks, menggunakan kunci atribut teks yang dijelaskan dalam Referensi Penambahan UIKit NSString.
Ketersediaan Tersedia di iOS 5.0 dan yang lebih baru. Dinyatakan dalam UINavigationBar.h
sumber