Friday 4 August 2017

Bar Navigasi Edgesforextendedlayout Menghilang


Memperbaiki Masalah Tumpang Tindih Navigasi iOS 7 Ada masalah yang telah mengganggu pengembang iOS karena bilah navigasi yang cukup transparan muncul di iOS 7, sesuatu ketika saya bertanya kepada orang mengapa hal itu terjadi, mereka sama sekali tidak tahu. Ada perbaikan sederhana yang setiap orang telah menggunakan, tapi ini hack dan banyak pengembang baru saja menggunakannya tanpa memahami masalahnya. Masukkan itu ke controller Anda dan tiba-tiba saja bekerja. agak. Sekarang bar nav tidak memiliki titik untuk menjadi transparan, yang mengalahkan tujuannya. Pandangan yang seharusnya ada di baliknya, tampilan akar kita, dan warna latar belakangnya, tidak lagi muncul lagi. Jujur saja, Anda mungkin tidak peduli, ini mungkin cukup bagi Anda, tapi penting Anda masih mengerti masalahnya, jadi bacalah terus. Jika Anda telah melakukan pengembangan web, ini agak seperti overflow: tersembunyi di CSS. Apakah pekerjaan itu, tapi masih berupa quothackquot. Jadi masalahnya adalah ketika bingkai pandangan Anda disetel, tidak seperti di iOS 6, kerangka masih mencakup area di bawah bilah navigasi. Apa yang mungkin tidak Anda sadari, adalah jika UIScrollView. Atau subkelas seperti UITableView. Adalah tampilan akar untuk kontroler Anda, ia akan memiliki properti konten yang tersimpan dengan benar, sehingga memungkinkan frame berada di bawah bilah navigasi, namun asal sebenarnya gambar mulai dari bagian bawah bilah navigasi. Ini berarti kita bisa dengan mudah memperbaiki masalah pada bilah navigasi yang tumpang tindih dengan membuat tampilan akar kita menjadi UIScrollView (atau subkelas), sementara tetap membiarkan warna latar belakang kita bersinar. Anda dapat membuat tampilan akar Anda dengan UIScrollView dengan menentukan metode loadView, di mana tampilan akar Anda, dan subviewnya, harus dibuat jika Anda membuat tampilan Anda secara terprogram. Jika Anda mencoba ini, Anda akan mendapatkan ini. Perhatikan kilau merah melalui panel navigasi Perhatikan bahwa kita menetapkan asal-usul pemandangan biru itu menjadi pojok kiri atas Semuanya duduk dengan baik dan bekerja bagaimana Apple mengharapkan kita untuk menggunakan bilah navigasi transparan. Ini memiliki bonus tambahan untuk memberi kami cara yang lebih mudah untuk memperluas tata letak kami di luar layar sekarang karena kami menggunakan tampilan gulir, namun Anda mungkin tidak memerlukannya, namun Anda bisa menggunakannya sebagai pengganti UIView yang dapat memilikinya. Set contentInset Saya melihat ke dalam perbedaan memori untuk ini, tapi harapan saya akan sangat minim. Jika Anda ingin mempelajari lebih lanjut tentang RubyMotion, lihat screencasts saya di motioninmotion. tv atau buku RubyMotion for Rails Developers yang akan datang. Yang tersedia untuk pre-order sekarang, dengan model harga Bayar apa yang Anda inginkan, dengan bagian 1 hampir selesai dan akan segera dirilis. RubyMotion Adventures - MotionInMotion BlogMulai di iOS7, pengendali tampilan menggunakan tata letak layar penuh secara default. Pada saat yang sama, Anda memiliki kontrol lebih terhadap bagaimana menampilkan pandangannya, dan hal itu dilakukan dengan properti tersebut: Pada dasarnya, dengan properti ini Anda mengatur sisi mana dari pandangan Anda dapat diperluas untuk mencakup keseluruhan layar. Bayangkan bahwa Anda mendorong UIViewController ke UINavigationController. Bila tampilan kontroler tampilan itu ditata, ia akan mulai dari tempat bilah navigasi berakhir, namun properti ini akan menentukan sisi mana dari tampilan (atas, kiri, bawah, kanan) dapat diperluas untuk mengisi keseluruhan layar. Mari kita lihat dengan contoh: Di sini Anda tidak menetapkan nilai edgesForExtendedLayout. Oleh karena itu nilai default diambil (UIRectEdgeAll), sehingga tampilan meluas tata letaknya untuk mengisi keseluruhan layar. Ini adalah hasilnya: Seperti yang Anda lihat, latar belakang merah melebar di belakang panel navigasi dan status bar. Sekarang, Anda akan menetapkan nilai itu ke UIRectEdgeNone. Jadi Anda memberi tahu kontroler tampilan untuk tidak memperpanjang tampilan untuk menutupi layar: Properti ini digunakan saat tampilan Anda adalah UIScrollView atau yang serupa, seperti UITableView. Anda ingin meja Anda untuk memulai dari mana bar navigasi berakhir, karena Anda tidak akan melihat keseluruhan konten jika tidak, namun pada saat bersamaan Anda ingin meja Anda menutupi keseluruhan layar saat menggulir. Dalam hal ini, setting edgesForExtendedLayout to None wont work karena tabel Anda akan mulai bergulir di mana bilah navigasi berakhir dan tidak akan ketinggalan. Di sinilah properti ini berguna, jika Anda membiarkan pengendali tampilan secara otomatis menyesuaikan inset (menyetel properti ini ke YA, juga nilai default), akan menambahkan inset ke bagian atas tabel, sehingga tabel akan mulai dari tempat navigasi. Ujung bar, tapi gulir akan menutupi keseluruhan layar. Ini adalah saat diset ke NO: Dan YA (secara default): Dalam kedua kasus tersebut, tabel bergulir di belakang panel navigasi, namun dalam kasus kedua (YA), ini akan dimulai dari bawah bilah navigasi. Nilai ini hanya merupakan tambahan dari yang sebelumnya. Jika bilah status buram, tampilan tidak disertakan untuk menyertakan bilah status juga, kecuali parameter ini adalah YA. Jadi, jika Anda memperpanjang pandangan untuk menutupi bilah navigasi (edgesForExtendedLayout ke UIRectEdgeAll) dan parameternya TIDAK (default), ia tidak akan menutup bilah status jika buramnya. Jika ada yang tidak jelas, tuliskan komentar dan jawablah itu. Bagaimana iOS tahu apa UIScrollView yang menggunakan iOS meraih subview pertama dalam tampilan viewcontrollers Anda, jadi yang ada di indeks 0, dan jika subkelas UIScrollView-nya kemudian menerapkan properti yang dijelaskan padanya. Tentu saja, ini berarti UITableViewController bekerja secara default (karena UITableView adalah tampilan pertama).

No comments:

Post a Comment