Saya telah mencoba untuk menghapus perbatasan navigationBars tanpa hasil. Saya telah meneliti dan orang-orang tampaknya mengatakan untuk menyetel shadowImage dan BackgroundImage ke nihil, tetapi ini tidak berfungsi dalam kasus saya.
Kode saya
self.navigationController?.navigationBar.barTintColor = UIColor(rgba: "#4a5866")
self.navigationController?.navigationBar.setBackgroundImage(UIImage(named: ""), forBarMetrics: UIBarMetrics.Default)
self.navigationController?.navigationBar.shadowImage = UIImage(named: "")
ilustrasi:
sumber
Cepat 4 & Cepat 5
Menghapus perbatasan:
Mengembalikan perbatasan:
sumber
ini akan menghapus gambar bayangan sama sekali
sumber
Dengan Swift 2, Anda dapat melakukannya dengan cara ini:
AppDelegate
Di dalam func application (..., didFinishLaunchingWithOptions launchOptions: ...)
untuk Swift 3:
sumber
Tulis saja ini di ekstensi UINavigationBar
Dan di viewController Anda ...
Dan untuk membatalkan ini untuk viewController apa pun, cukup berikan false.
sumber
Atur
barStyle
ke.Black
sebelum mengatur warna:sumber
Cepat 5
Saat menggunakan setBackgroundImage / shadowImage untuk menyembunyikan garis rambut, akan terjadi sedikit penundaan. Metode ini menghilangkan penundaan. Penghargaan untuk Chameleon Framework . Ini adalah metode yang mereka gunakan (di ObjC)
sumber
Jawaban Luca Davanzo bagus, tetapi tidak berfungsi di iOS 10. Saya mengubahnya agar berfungsi di iOS 10 dan yang lebih lama.
Anda juga dapat memperluas UINavigationController dan membatalkannya.
removeFromSuperview()
di telepon tidak akan berfungsi di iOS 10, jadi saya hanya menyetel alpha ke 0 sehingga panggilan ini kompatibel di mana saja.sumber
height >= 1.0
. Pada model iPhone yang memiliki layar retina 3x (mis. 8 Plus, XR ...) garis rambut memiliki tinggi 0,33.Untuk menghapus batas dari UINavigationBar di Swift 3+, gunakan:
sumber
untuk cepat 3
dalam
viewDidLoad
metodesumber
Hanya ini yang berhasil untuk saya,
Ref
sumber
Diperbarui untuk Swift 4 jika ada yang bertanya-tanya
Ini bahkan lebih tidak bertele-tele sekarang.
sumber
Inilah caranya jika Anda ingin melakukannya tanpa mengubah warna latar belakang:
CATATAN: Ini mungkin macet pada aplikasi produksi. Rupanya NavigationBar tidak suka pandangannya menghilang
sumber
Jawaban yang diterima bekerja untuk saya tetapi saya perhatikan ketika saya ingin gambar bayangan muncul kembali ketika muncul kembali atau mendorong maju ke vc lain, ada kedipan yang terlihat di bilah navigasi.
Menggunakan metode ini
navigationController?.navigationBar.setValue(true, forKey: "hidesShadow")
di viewWillAppear bilah bayangan disembunyikan di pengontrol tampilan yang terlihat saat ini.Menggunakan 2 metode ini
di viewWillDisappear kedipan masih terjadi tetapi hanya ketika gambar bayangan muncul kembali dan bukan bilah navigasi itu sendiri.
sumber
untuk swift3 Anda harus menulis dengan cara yang sedikit berbeda:
sumber
Ini adalah versi sederhana dari jawaban Gaurav Chandarana .
sumber
Delegasi aplikasi
sumber
Jika Anda hanya ingin menghapus garis bawah dan mempertahankan warna solid navigationBar, tambahkan baris kode berikut di viewDidLoad: Swift 3, 4:
Perdamaian!
sumber
Garis pembatas adalah UIImageView dan menghapus subview yang merupakan imageView akan menghapus barButtonItems dengan UIImageView. Kode di bawah ini akan membantu Anda menghapusnya. Semoga ini bisa membantu seseorang yang menghadapi masalah seperti saya.
Tinggi batas UIImageView hanya 0,5 jadi kode ini hanya menghapus itu.
sumber
Dalam AppDelegate , ini telah mengubah format NavBar secara global dan menghapus garis bawah / batas:
Belum berhasil menerapkan sesuatu yang berbeda pada VC tertentu, tetapi ini akan membantu 90% orang
sumber
ini adalah jawaban dalam 3 basis cepat dari jawaban Nate Cook
sumber
iOS 11 dan Swift 4 Anda harus mencoba mengikuti jika Anda ingin menghapus perbatasan tetapi jangan membuat bilah navigasi tembus cahaya
self.navigationBar.shadowImage = UIImage()
sumber
di navigationController kustom Anda, tambahkan baris berikut:
Catatan penting
baris terakhir penting jika Anda menggunakan metode baris pertama viewDidLoad () karena navigationController harus menggambar ulang bilah navigasi, tetapi dengan mudah Anda dapat menggunakan ini tanpa layoutIfNeeded () dalam metode viewWillAppear () sebelum menggambar bilah navigasi
sumber
Metode yang lebih licik dari Jack Chen:
Menggunakan:
sumber
sumber