Setelah memperbarui ke Xcode 5, bilah navigasi di semua tampilan aplikasi saya telah bergeser ke bawah. Berikut adalah beberapa tangkapan layar, yang pertama menampilkan semua yang ada di tampilan saat ditarik ke bawah, dan yang kedua menampilkan semuanya tanpa tersentuh. Bilah pencarian harus dimulai di mana bilah navigasi.
Adakah yang tahu bagaimana saya bisa memperbaikinya?
edit: saya telah mencoba rekomendasi ini sebelumnya:
if ([self respondsToSelector:@selector(edgesForExtendedLayout)])
self.edgesForExtendedLayout = UIRectEdgeNone;
Tapi hasilnya sangat aneh.
Ini mungkin karena saya memiliki "menu geser" di bawah pengontrol tampilan ini yang muncul karena transparansi bilah navigasi.
ios
objective-c
ios7
uinavigationbar
uistatusbar
Sam D20
sumber
sumber
Jawaban:
Setel properti tembus bilah navigasi ke TIDAK :
Ini akan memperbaiki tampilan agar tidak dibingkai di bawah bilah navigasi dan bilah status.
Jika Anda harus menampilkan dan menyembunyikan bilah navigasi, gunakan
dalam
viewDidLoad
metode Anda .sumber
viewDidLoad
namun tidak menghasilkan perubahan.Secara
iOS 7
default, semua nilai properti Translucent Controller adalah YA, jadi Anda menyetel properti translucent NO untuk masalah ini.sumber
Anda dapat menonaktifkan "Perpanjang tepi" di Atribut inspektur Pengontrol Tampilan layar ini (seperti yang ditunjukkan pada gambar di bawah):
sumber
Ini berfungsi untuk cepat juga di iOS 8.1
sumber
Jika Anda ingin mempertahankan kejelasan pada Anda
navigationBar
, di akhirviewDidLoad
atau di AndaviewWillAppear
tambahkan baris kode ini:Entah bagaimana jika
scrollView
subkelas Anda (UITableView
,,UICollectionView
dll.) Berada diindex
0 dalam tampilan Anda saat inisubviews
, secara otomatis akan menyesuaikan insets sesuai dengan AndanavigationBar
. Dan itu seharusnya tidak memengaruhi UI Anda dalam versi sebelum iOS7 juga.EDIT Jika Anda menginisialisasi secara
UITableView
terprogram, yang terbaik adalah menambahkannya ke tampilan menggunakan ini[self.view insertSubview:self.tableView atIndex:0];
sumber
[self.view insertSubview:self.tableView atIndex:0];
alih - alih mengirimnya ke belakang setelah Anda menambahkannya.Cepat 4 :
Tetapkan baris kode berikut dalam metode viewDidLoad:
sumber
Anda dapat menambahkan metode ini ke pengontrol tampilan Anda seperti yang ditunjukkan di URL ini :
sumber
Pendekatan lain adalah menyetel
self.automaticallyAdjustsScrollViewInsets = YES;
pengontrol tampilan Anda. Ini diaktifkan secara default. Tetapi dalam kasus Anda:Saya melihat Anda menggunakan EGORefreshHeaderView. Itu bermain dengan contentInset dari UITableView. Jadi saat Anda melepaskannya, header akan mengatur ulang inset atas alih-alih mengembalikan nilai sebelumnya.
sumber
Jika Anda ingin memiliki kontrol penuh pada tampilan dan menghindari kesalahan penyesuaian iOS, subclass UITableView dan sesuaikan insets (baik scroll dan indikator) di - (void) willMoveToWindow: (UIWindow *) newWindow. Bekerja untuk saya.
sumber
Opsi lainnya adalah membuka file Info.plist Anda dalam mode kode sumber dan memasukkan info berikut:
Semoga ini membantu.
sumber