CGRect cgRect1 = [[UIScreen mainScreen] applicationFrame];
UISearchBar *mySearchBar = [[UISearchBar alloc]
initWithFrame:CGRectMake(0, 0, cgRect.size.width, 40)];
mySearchBar.autoresizingMask =
UIViewAutoresizingFlexibleWidth|UIViewAutoresizingFlexibleHeight ;
UITableView *myTableView = [[UITableView alloc]
initWithFrame:CGRectMake(0, 40, cgRect.size.width, cgRect.size.height-40)];
myTableView.autoresizingMask =
UIViewAutoresizingFlexibleWidth|UIViewAutoresizingFlexibleHeight;
[self.view addSubview:mySearchBar];
[self.view addSubview:myTableView];
Di versi sebelumnya, ini berfungsi dengan benar. Bilah pencarian muncul di bawah statusbar
bilah navigasi dan. Ini tableview
muncul di bawah bilah pencarian
Tetapi ketika saya menjalankan ini Xcode 5 sdk iOS 7
, bilah pencarian tidak terlihat (menurut saya ditempatkan di bawah bilah status dan bilah navigasi), dan juga bilah navigasi muncul di atas tampilan tabel.
Apakah akan diperbaiki dengan iOS 7
rilis stabil?
Atau apakah ini masalah pengkodean saya?
Atau harus kita menanganinya dengan menambahkan y (y = statubar height + nav bar height)
nilai iOS 7
?
Saya baru-baru ini mengunduh Xcode 5 DP untuk menguji aplikasi saya di iOS 7. Hal pertama yang saya perhatikan dan konfirmasikan adalah bahwa batas tampilan saya tidak selalu diubah ukurannya ke akun untuk bilah status dan bilah navigasi.
Di viewDidLayoutSubviews, saya mencetak batas tampilan:
{{0, 0}, {320, 568}}
Ini mengakibatkan konten saya muncul di bawah bilah navigasi dan bilah status.
Saya tahu saya bisa menghitung sendiri tinggi badan dengan mendapatkan tinggi layar utama, mengurangkan tinggi bilah status dan tinggi bilah navigasi, tetapi sepertinya itu pekerjaan tambahan yang tidak perlu.
Apakah ada orang lain yang mengalami masalah ini?
MEMPERBARUI:
Saya telah menemukan solusi untuk masalah khusus ini. Setel properti tembus bilah navigasi ke TIDAK:
self.navigationController.navigationBar.translucent = NO;
Ini akan memperbaiki tampilan agar tidak dibingkai di bawah bilah navigasi dan bilah status.
Namun, saya belum menemukan perbaikan untuk kasus ketika Anda ingin bilah navigasi menjadi tembus cahaya. Misalnya, melihat foto layar penuh, saya ingin bilah navigasi tembus, dan tampilan dibingkai di bawahnya. Itu berfungsi, tetapi ketika saya beralih menampilkan / menyembunyikan bilah navigasi, saya telah mengalami hasil yang lebih aneh. Subview pertama (a UIScrollView
) mendapatkan batasan asal y berubah setiap waktu.
Jawaban:
Itu tidak sepenuhnya benar. Telah ada properti baru yang diperkenalkan di iOS 7 yang memungkinkan Anda menyesuaikan perilaku tata letak seperti di versi iOS sebelumnya. Tempatkan potongan kode ini di pengontrol tampilan Anda, dan Anda siap melakukannya! Ruang yang digunakan bilah navigasi Anda harus diperhitungkan secara otomatis
Anda perlu menambahkan hal di atas dalam
-(void)viewDidLoad
metode Anda .Catatan: Anda harus menggunakan rilis GM terbaru dari iOS 7 dan Xcode 5 sekarang karena API telah berubah dari versi beta.
sumber
Jika Anda bekerja di Storyboard (yang sangat saya sarankan!) Ini solusinya: Anda dapat menonaktifkan "Perpanjang Tepi" ViewController Anda di storyboard. Anda harus melakukan ini untuk setiap viewController. Anda dapat menonaktifkan tepi yang diperluas dengan mengklik ikon viewController di stortyboard (di samping productOwner di bawah tampilan itu sendiri) dan kemudian memilih inspektur atribut (Seperti yang ditunjukkan gambar).
Ini juga akan mengatur garis perataan seperti iOS 6.
Alat hebat lainnya di xCode 5 adalah "Pratinjau": klik tombol butler (asisten editor) dan pilih Pratinjau. di sana Anda dapat memilih iOS 6 dan melihat bagaimana desain storyboard Anda akan terlihat di iOS 6.
Bagus sekali: D
[Memperbarui]
Hati-hati: menonaktifkan "Perpanjang Tepi" dapat mengakibatkan cahaya hitam di bilah navigasi saat aplikasi memasuki latar belakang di iOS7. cahaya juga akan terlihat pada tampilan multitasking (tekan dua kali tombol home). ini dapat diatasi dengan menyetel warna latar belakang tampilan bilah navigasi menjadi putih.
sumber
Seperti yang dikatakan OP, ada solusi sederhana untuk ini yaitu mengatur bilah navigasi menjadi buram. Daripada melakukan ini dalam kode, cukup hapus centang "Translucent" untuk bilah navigasi root Anda:
sumber
self.edgesForExtendedLayout=UIRectEdgeNone;
Ini berfungsi pada simulator iOS 7 (Xcode 5 DP5)
sumber
if (NSFoundationVersionNumber > NSFoundationVersionNumber_iOS_6_1)
semua jawaban ini sangat membantu, terutama MQoder, tetapi bagi saya, saya juga harus menyetel bilah atas default ke "navigasi hitam buram".
sumber
@ Jawaban One Man Crew benar, tapi:
Saya akan merekomendasikan untuk menggunakan kode ini untuk menghindari kesalahan saat menjalankan aplikasi pada versi yang lebih lama:
sumber
Dan Anda perlu melakukan ini di AppDelegate # application: didFinishLaunchingWithOptions:
Jika tidak, warna latar belakang Bilah Navigasi akan berubah menjadi abu-abu. Karena Bilah Navigasi transparan tumpang tindih dengan jendela.
sumber
Jika Anda ingin menjaga transparansi saat pengguna menggulir tampilan tabel Anda, Anda dapat mengatur contentInset-nya:
sumber
Salah satu solusinya adalah dengan menggunakan Pengontrol Navigasi. Ini secara otomatis menyelesaikan masalah. Juga gunakan Xcode 5 daripada versi Pratinjau Xcode karena versi beta.
sumber