Bagaimana cara membuat UISegmentedControl
sebagai bagian dari UINavigationBar
di bawahnya? Apakah itu terhubung ke UINavigationBar
atau apakah itu tampilan terpisah lengkap yang baru saja ditambahkan sebagai subview ke UINavigationController
pengontrol tampilan. Sepertinya ini adalah bagian dari UINavigationBar
karena ada bayangan di bawah bilah.
ios
uinavigationbar
uisegmentedcontrol
yoeriboven
sumber
sumber
Jawaban:
Ini adalah efek sederhana untuk dicapai.
Pertama, tempatkan segmen di toolbar. Tempatkan bilah alat ini tepat di bawah bilah navigasi. Mengatur delegasi dari toolbar untuk controller pandangan Anda, dan kembali
UIBarPositionTopAttached
dipositionForBar:
. Anda dapat melihat di aplikasi toko, jika Anda melakukan gerakan pop interaktif, bahwa bilah segmen tidak bergerak sama dengan bilah navigasi. Itu karena mereka bukanlah bar yang sama.Sekarang untuk menghilangkan garis rambut. "Garis rambut" adalah
UIImageView
subview dari bilah navigasi. Anda dapat menemukannya dan menyetelnya sebagai tersembunyi. Inilah yang dilakukan Apple di aplikasi kalender asli mereka, misalnya, serta aplikasi toko. Ingatlah untuk menunjukkannya ketika tampilan saat ini menghilang. Jika Anda bermain-main sedikit dengan aplikasi Apple, Anda akan melihat bahwa garis rambut diatur ke tersembunyiviewWillAppear:
dan diatur ke ditampilkanviewDidDisappear:
.Untuk mendapatkan gaya dari bilah pencarian, cukup setel bilah itu
searchBarStyle
keUISearchBarStyleMinimal
.sumber
initWithRect: CGRectMake(0, self.toplayoutGuide.length, 320, 44)
, atau mungkin menggunakan autolayout untuk memposisikannya? Apa yang akan menjadi puncak baru dari childViewsself.toplayoutGuide.length + 44
?Pendekatan lain adalah mencari garis rambut dan memindahkannya ke bawah bilah alat yang ditambahkan. Inilah yang saya pikirkan.
Saya juga menemukan Sampel Kode NavBar Apple (Menyesuaikan UINavigationBar) sangat membantu untuk menyelesaikan masalah ini.
Juga pastikan untuk menangani batas atas UIToolbar , itu mungkin muncul dan Anda bisa membingungkannya dengan garis rambut NavBar. Saya juga ingin UIToolbar terlihat persis seperti NavBar, Anda mungkin ingin menyesuaikan Toolbar nanti
barTintColor
.sumber
Berikut adalah pendekatan Swift Berorientasi Protokol untuk masalah khusus ini, berdasarkan jawaban yang diterima:
HideableHairlineViewController.swift
SampleViewController.swift
sumber
shadowImage
properti dari bilah navigasi.Anda dapat menemukan bilah navigasi dengan UISegmentedControl di Apple Sample Code: https://developer.apple.com/library/ios/samplecode/NavBar/Introduction/Intro.html
Atau Anda dapat membuatnya secara terprogram, berikut adalah kode dalam jawaban saya di utas lain Tambahkan kontrol tersegmentasi ke bilah navigasi dan pertahankan judul dengan tombol
sumber
Saya ingin melakukan hal yang sama .. Dan mendapatkan ini:
1 - subkelas UINavigationBar
2 - Atur NavigationController Anda dengan subkelas
3 - Tambahkan UISegmentedControl Anda di navigationBar
4 - Run and Fun -> jangan lupa memberi warna yang sama pada keduanya
sumber pencarian:
Meretas UINavigationBar
SO pertanyaan
sumber
UINavigationButton
adalah API pribadi, dan aplikasi Anda akan ditolak karena menggunakannya. Anda harus mencoba menutupi penggunaan kelas itu.Apple memiliki aplikasi sampel khusus untuk ini. Ini menjelaskan pengaturan gambar bayangan transparan dan gambar latar berwarna untuk bilah navigasi dan cara mengkonfigurasi tampilan di bawah bilah navigasi. Ini juga memiliki contoh penyesuaian bilah navigasi lainnya.
Lihat https://developer.apple.com/library/ios/samplecode/NavBar/Introduction/Intro.html
sumber
Saya mencoba menghilangkan garis rambut menggunakan metode @ Simon tetapi tidak berhasil. Saya mungkin melakukan sesuatu yang salah karena saya super noob. Namun, alih-alih menghapus garis, Anda cukup menyembunyikannya menggunakan
hidden
atribut. Berikut kodenya:Semoga ini bisa membantu seseorang!
sumber
UISegmentedControl di bawah UINavigationbar dengan cepat 3/4
Detail
Xcode 9.2, cepat 4
Sampel Lengkap
Hasil
sumber
UINavigationController
?Ada banyak cara untuk melakukan apa yang Anda minta. Yang termudah tentu saja hanya membuatnya di pembuat antarmuka tetapi saya berasumsi ini bukan yang Anda pikirkan. Saya membuat contoh gambar yang Anda posting di atas. Ini tidak persis sama tetapi Anda dapat bermain-main dengan banyak properti untuk mendapatkan tampilan dan nuansa dari apa yang Anda cari.
Dalam ViewController.h
Di ViewController.m
sumber
displaySearchBarInNavigationBar adalah cara untuk menampilkan bilah pencarian serta bilah cakupannya di bilah navigasi.
Anda hanya perlu menyembunyikan bilah pencarian setiap kali Anda menampilkan judul khusus
sumber