Bagaimana Anda membuat UINavigationBar transparan ? Meskipun saya ingin item barnya tetap terlihat.
235
Bagaimana Anda membuat UINavigationBar transparan ? Meskipun saya ingin item barnya tetap terlihat.
Jika ada yang bertanya-tanya bagaimana mencapai ini di iOS 7+, berikut ini solusinya (iOS 6 juga kompatibel)
Dalam Objective-C
[self.navigationBar setBackgroundImage:[UIImage new]
forBarMetrics:UIBarMetricsDefault];
self.navigationBar.shadowImage = [UIImage new];
self.navigationBar.translucent = YES;
Dalam cepat 3 (iOS 10)
self.navigationBar.setBackgroundImage(UIImage(), for: .default)
self.navigationBar.shadowImage = UIImage()
self.navigationBar.isTranslucent = true
Dengan cepat 2
self.navigationBar.setBackgroundImage(UIImage(), forBarMetrics: .Default)
self.navigationBar.shadowImage = UIImage()
self.navigationBar.translucent = true
Mengatur translucent
ke YES
pada bilah navigasi melakukan trik, karena perilaku yang dibahas dalam UINavigationBar
dokumentasi. Saya akan melaporkan di sini fragmen yang relevan:
Jika Anda menyetel properti ini ke
YES
pada bilah navigasi dengan gambar latar belakang kustom buram, bilah navigasi akan menerapkan opacity sistem kurang dari 1,0 ke gambar.
[self.navigationController.navigationBar setBackgroundImage:nil forBarMetrics:UIBarMetricsDefault]; self.navigationController.navigationBar.shadowImage = nil; self.navigationController.navigationBar.translucent = NO;
self.navigationController?.navigationBar.setBackgroundImage(UIImage(), forBarMetrics: UIBarMetrics.Default) self.navigationController?.navigationBar.shadowImage = UIImage() self.navigationController?.navigationBar.translucent = true
Di iOS5 Anda dapat melakukan ini untuk membuat bilah navigasi transparan:
sumber
[[UINavigationBar appearance] setShadowImage: [[UIImage alloc] init]];
Dari IOS7:
sumber
Bagi siapa saja yang ingin melakukan ini di Swift 2.x:
atau Swift 3.x:
sumber
Ini sepertinya berhasil:
sumber
-drawRect:
dalam subkelas yang tepat, bukan dalam kategori, dan kemudian menggunakan subkelas ini sebagai bilah navigasi Anda.Setelah melakukan apa yang orang lain katakan di atas, yaitu:
... bilah navigasi saya masih putih . Jadi saya menambahkan baris ini:
... dan voila! Sepertinya ini akan berhasil.
sumber
Jika Anda membuat dengan beta iOS 13.4 dan XCode 11.4 beta terbaru, jawaban yang diterima tidak akan berfungsi lagi. Saya telah menemukan cara lain, mungkin itu hanya bug dalam perangkat lunak beta, tapi saya menuliskannya di sana, untuk berjaga-jaga
(cepat 5)
sumber
Saya tahu topik ini sudah lama, tetapi jika orang ingin tahu cara melakukannya tanpa membebani metode drawRect.
Inilah yang Anda butuhkan:
sumber
Kode di bawah ini membentang pada jawaban teratas yang dipilih untuk utas ini, untuk menghilangkan batas bawah dan mengatur warna teks:
Dua baris kode terakhir dari kode ini mengatur transparansi. Saya meminjam kode itu dari utas ini dan berhasil dengan sempurna!
Properti "clipsToBounds" adalah kode yang saya temukan yang menghilangkan garis batas bawah dengan ATAU tanpa set transparansi (jadi jika Anda memutuskan untuk menggunakan latar belakang putih / hitam / dll yang solid, sebagai gantinya, tidak akan ada garis perbatasan).
Baris "tintColor" (baris kode 2) mengatur tombol punggungku menjadi abu-abu terang
Saya menyimpan barTintColor sebagai cadangan. Saya tidak tahu mengapa transparansi tidak akan berfungsi, tetapi jika tidak, saya ingin bg putih saya seperti dulu
sumber
untuk Swift 3.0:
sumber
Solusi C # / Xamarin
sumber
Coba bagian kode berikut:
sumber
Cara lain yang berhasil bagi saya adalah dengan Subclass UINavigationBar Dan biarkan Metode drawRect kosong !!
sumber
Dalam Swift 4.2
(di viewWillAppear), dan kemudian di viewWillDisappear, untuk membatalkannya, masukkan
sumber
Apakah yang Anda maksud sepenuhnya transparan, atau menggunakan gaya hitam-tembus pandang yang terlihat di aplikasi Foto? Yang terakhir dapat Anda capai dengan mengatur
barStyle
propertinyaUIBarStyleBlackTranslucent
. Mantan ... Saya tidak yakin tentang. Jika Anda ingin item di dalamnya tetap terlihat, Anda mungkin harus melakukan beberapa penggalian di hierarki tampilan bilah dan menghapus tampilan yang mengandung latar belakangnya.sumber
Ini berfungsi untuk Swift 2.0.
sumber
Periksa RRViewControllerExtension , yang didedikasikan untuk manajemen tampilan bilah UINavigation.
dengan RRViewControllerExtension di proyek Anda, Anda hanya perlu menimpanya
di viewcontroller Anda.
sumber
sumber