Saat ini saya sedang memigrasi aplikasi saya di ios 7 dan saya telah terjebak selama berjam-jam di manajemen navigasi bar / baru.
Sebelumnya, ketika kami memiliki pengontrol navigasi, kami memiliki cuplikan seperti ini:
UINavigationController *navController = [[UINavigationController alloc]initWithRootViewController:[[MainViewController alloc]init]];
Di pembangun antarmuka, kami memiliki pilihan untuk menetapkan bilah navigasi yang ada untuk tampilan dan semuanya cocok dengan konten tampilan sebenarnya.
OK jadi sekarang, saya tidak tahu bagaimana mendesain dengan benar dengan pembangun antarmuka. Saya masih punya cuplikan untuk menginisialisasi navcontroller saya. Namun dalam pembangun antarmuka untuk MainViewController saya jika saya menetapkan bilah status ke bilah navigasi transparan atau buram, saya memiliki offset 44px di bagian atas (lihat di bawah).
Pembuat Antarmuka_________________________Dan hasilnya
Sekarang, jika saya mengatur bilah status ke none, tidak ada offset di atas tetapi karena tampilan pada simulator lebih kecil karena bilah navigasi bagian bawah tampilan di pembangun antarmuka terputus.
Pembuat Antarmuka_________________________Dan hasilnya
Saya kira saya benar-benar kehilangan sesuatu di sini tetapi saya tidak dapat menemukan topik atau info apel di iOS7 Transitions Guide tentang itu.
Terima kasih atas bantuan Anda
EDIT
Seperti yang dapat kita lihat dalam gambar, anak pertama dari tampilan adalah UIScrollView yang berisi kedua label, masalahnya tidak muncul ketika tidak ada scrollview. Itu juga muncul jika itu adalah UITableView. Jika label di luar UIScrollView, tidak ada offset untuk label itu.
Jawaban:
OK jadi saya menemukan solusinya, saya telah mengatur di controller saya properti:
Saya tidak benar-benar mengerti manfaat sebenarnya dari properti ini, (atau mengapa nilai defaultnya benar)
Satu-satunya dokumentasi yang saya temukan ada di sana:
Memperbarui
Di iOS 11
automaticallyAdjustsScrollViewInsets
sudah usangAnda sekarang harus menggunakan:
Saya juga mendorong Anda untuk memeriksa pertanyaan ini dan jawabannya untuk mendapatkan pemahaman yang lebih baik tentang properti-properti itu
sumber
UIScrollView
dari bergulir. Tetapi tanpa ini saya tidak bisa menyingkirkan offset. Weired ...@Jawaban Justafinger bekerja seperti pesona bagi saya juga.
Hanya ingin menambahkan bahwa pengaturan ini juga dapat disesuaikan dengan mudah dari pembangun antarmuka.
sumber
Saya mengalami masalah yang sama, tapi saya menemukan properti yang agak aneh pada ViewController di pembuat antarmuka yang tampaknya telah menyebabkan ini untuk saya. Ada kotak centang "Perpanjang Tepi". Saya menghapus centang "Di Bawah Bilah Atas", dan semuanya mulai berjalan dengan baik untuk saya.
sumber
Dengan secara otomatisAdjustsScrollViewInsets diatur ke YA (pengaturan default) ada ketidakcocokan dalam posisi scrollview antara ios6 dan ios7, jadi untuk membuatnya konsisten Anda perlu menonaktifkan pengaturan ini. Namun, ios6 akan macet jika menemukan secara otomatisAdjustsScrollViewInsets, jadi Anda harus melakukan perubahan terprogram secara otomatisAdjustsScrollViewInsets bersyarat pada ios7 atau matikan opsi menggunakan storyboard / NIB
sumber
Saya memiliki masalah yang sama, setelah mengabaikan viewController, contentOffset dari tableView saya diubah menjadi (0, -64).
solusi saya agak aneh, saya mencoba semua jawaban lain tetapi tidak berhasil, satu-satunya hal yang memperbaiki masalah saya adalah mengganti posisi tableView di pohon kontrol .xib
itu adalah kontrol pertama di Tampilan induk seperti ini:
Saya memindahkan tableView tepat setelah ImageView dan berhasil:
tampaknya menempatkan tampilan tabel di posisi pertama menyebabkan masalah, dan memindahkan tampilan tabel ke posisi lain memperbaiki masalah.
PD Saya tidak menggunakan autoLayout baik storyboard
Semoga ini bisa membantu seseorang!
sumber
Saya juga menghadapi masalah ini.
UIScrollView
ukuran konten dihitung oleh OS sebagai ukuran lain, asal disediakan oleh sistem kendala - itu sebabnya OS memiliki keraguan.Cara memperbaiki - Anda harus secara eksplisit menentukan ukuran konten
UIScrollView
:UIView
(saya ganti namanya menjadiContentView
)ContentView.Weight = View.Weight
danContentView.Height = View.Height
sumber
Sepertinya solusi penyelesaiannya adalah dengan melihat file storyboard sebagai "iOS 6.1 dan yang lebih lama" (pilih file storyboard-> File inspector-> Interface Builder Document-> View As. Subviews posisi dalam mode ini menunjukkan offset.
sumber
Terima kasih kawan atas solusinya! Saya berjuang selama berjam-jam mencoba menyelesaikan masalah. Semuanya baik-baik saja ketika tidak ada Bar Navigasi yang terlibat tapi itu rusak ketika saya menanamkan ViewController di NavigationController.
Saya menyelesaikannya dengan menghapus centang pada Adjust Scroll View Insets dan Under Top Bars . Keduanya terletak di Inspektur Atribut ViewController. Terima kasih banyak!
sumber