apakah itu digunakan untuk menambahkan padding ke UIScrollView? Jika tidak, Anda bisa memberi saya contoh praktis. Masalah saya bukanlah bagaimana mengimplementasikannya tetapi kapan mengimplementasikannya.
ForeignerBR
28
Ya, itu mengisi konten di bagian dalam tampilan gulir. Ini mirip dengan paddingproperti CSS .
Marc W
Maaf untuk mendukung ini, saya bisa memindahkannya pertanyaannya sendiri, tetapi berdasarkan ini, apa yang sebenarnya terjadi jika Anda mengatur setiap nilai contentInset ke 0 selain contentHeight misalnya? Apakah itu memaksa keseluruhan scrollview menjadi ketinggian yang Anda atur?
jakev
@ jakev Tidak, properti .frame mengontrol dimensi scrollview di dalam induknya (Lihat jawaban ini: stackoverflow.com/questions/5361369/… ). Mengatur contentInsets ke 0 untuk semua sisi berarti bahwa konten tidak akan diisi sama sekali di dalam scrollview. Jadi ketika Anda menggulir ke atas, kontennya berada tepat di bagian atas scrollview. Jika Anda menggulir ke bawah, konten mencapai tepat ke bawah scrollview.
Jeremy Wiebe
apakah mungkin untuk menjaga contentInset selalu walaupun ketika scrolling selalu menjaga marin ke atas (contenInset) dari scrollView
Chlebta
86
Sementara jawaban jball adalah deskripsi yang sangat baik dari insets konten, itu tidak menjawab pertanyaan kapan harus menggunakannya. Saya akan meminjam dari diagramnya:
Baris atas konten itu akan tetap terlihat karena masih di dalam bingkai tampilan gulir. Salah satu cara untuk memikirkan offset atas adalah "berapa banyak untuk menggeser konten ke bawah tampilan gulir ketika kita digulirkan sepenuhnya ke atas"
Untuk melihat tempat di mana ini benar-benar digunakan, lihat aplikasi Foto bawaan di iphone. Bilah Navigasi dan bilah status transparan, dan konten tampilan gulir terlihat di bawahnya. Itu karena bingkai tampilan gulir memanjang sejauh itu. Tetapi jika bukan karena inset konten, Anda tidak akan pernah dapat memiliki bagian atas konten yang menghapus navigasi bar transparan ketika Anda pergi jauh ke atas.
Yang menyenangkan di sini adalah Anda dapat menggunakan insets untuk membuat efek "scroll under status bar with blur".
TheEye
Contoh tentang aplikasi foto mudah dimengerti.
abhimuralidharan
8
Insets konten memecahkan masalah memiliki konten yang berada di bawah bagian lain dari Antarmuka Pengguna dan masih dapat dijangkau menggunakan bilah gulir. Dengan kata lain, tujuan dari Inset Konten adalah untuk membuat area interaksi lebih kecil dari area sebenarnya.
Pertimbangkan kasus di mana kita memiliki tiga area logis layar:
TOP BUTTONS
TEXT
BOTTOM TAB BAR
dan kami ingin TEKS agar tidak pernah muncul secara transparan di bawah TOP TOMBOL, tetapi kami ingin Teks muncul di bawah BOTTOM TAB BAR dan masih memungkinkan pengguliran sehingga kami dapat memperbarui teks yang duduk secara transparan di bawah BOTTOM TAB BAR.
Kemudian kita akan menetapkan asal atas menjadi di bawah TOMBOL TOP, dan tinggi untuk memasukkan bagian bawah BOTTOM TAB BAR. Untuk mendapatkan akses ke Teks yang duduk di bawah konten BOTTOM TAB BAR kami akan mengatur inset bawah menjadi ketinggian BOTTOM TAB BAR.
Tanpa sisipan, penggulung tidak akan membiarkan Anda menggulung konten yang cukup untuk mengetik ke dalamnya. Dengan inset, seolah-olah konten memiliki "isi BLANK" ekstra ukuran inset konten. Teks kosong telah "inset" ke dalam "konten" yang sebenarnya - begitulah saya mengingat konsepnya.
Insets adalah HANYA cara untuk memaksa scroller Anda memiliki "jendela" pada konten yang Anda inginkan. Saya masih mengacaukan kode sampel ini, tetapi idenya ada di sana: gunakan insets untuk mendapatkan "jendela" di blog Anda UIScrollView.
padding
properti CSS .Sementara jawaban jball adalah deskripsi yang sangat baik dari insets konten, itu tidak menjawab pertanyaan kapan harus menggunakannya. Saya akan meminjam dari diagramnya:
Itulah yang Anda dapatkan saat melakukannya, tetapi kegunaannya hanya muncul saat Anda menggulir:
Baris atas konten itu akan tetap terlihat karena masih di dalam bingkai tampilan gulir. Salah satu cara untuk memikirkan offset atas adalah "berapa banyak untuk menggeser konten ke bawah tampilan gulir ketika kita digulirkan sepenuhnya ke atas"
Untuk melihat tempat di mana ini benar-benar digunakan, lihat aplikasi Foto bawaan di iphone. Bilah Navigasi dan bilah status transparan, dan konten tampilan gulir terlihat di bawahnya. Itu karena bingkai tampilan gulir memanjang sejauh itu. Tetapi jika bukan karena inset konten, Anda tidak akan pernah dapat memiliki bagian atas konten yang menghapus navigasi bar transparan ketika Anda pergi jauh ke atas.
sumber
Insets konten memecahkan masalah memiliki konten yang berada di bawah bagian lain dari Antarmuka Pengguna dan masih dapat dijangkau menggunakan bilah gulir. Dengan kata lain, tujuan dari Inset Konten adalah untuk membuat area interaksi lebih kecil dari area sebenarnya.
Pertimbangkan kasus di mana kita memiliki tiga area logis layar:
dan kami ingin TEKS agar tidak pernah muncul secara transparan di bawah TOP TOMBOL, tetapi kami ingin Teks muncul di bawah BOTTOM TAB BAR dan masih memungkinkan pengguliran sehingga kami dapat memperbarui teks yang duduk secara transparan di bawah BOTTOM TAB BAR.
Kemudian kita akan menetapkan asal atas menjadi di bawah TOMBOL TOP, dan tinggi untuk memasukkan bagian bawah BOTTOM TAB BAR. Untuk mendapatkan akses ke Teks yang duduk di bawah konten BOTTOM TAB BAR kami akan mengatur inset bawah menjadi ketinggian BOTTOM TAB BAR.
Tanpa sisipan, penggulung tidak akan membiarkan Anda menggulung konten yang cukup untuk mengetik ke dalamnya. Dengan inset, seolah-olah konten memiliki "isi BLANK" ekstra ukuran inset konten. Teks kosong telah "inset" ke dalam "konten" yang sebenarnya - begitulah saya mengingat konsepnya.
sumber
Ini digunakan untuk menambahkan padding
UIScrollView
Tanpa
contentInset
, tampilan tabel seperti ini:Kemudian atur
contentInset
:Efeknya adalah sebagai berikut:
Tampaknya lebih baik, bukan?
Dan saya menulis blog untuk mempelajari
contentInset
, kritik diterima.sumber
Pertanyaan yang bagus
Pertimbangkan contoh berikut (
scroller
adalah UIScrollView):Insets adalah HANYA cara untuk memaksa scroller Anda memiliki "jendela" pada konten yang Anda inginkan. Saya masih mengacaukan kode sampel ini, tetapi idenya ada di sana: gunakan insets untuk mendapatkan "jendela" di blog Anda
UIScrollView
.sumber