Saya telah menyeret UITableView polos ke UIViewController di iOS 7.
Sekarang ada ruang offset vertikal sebelum sel pertama dimulai. Bagaimana cara menyingkirkannya? Saya ingin baris pertama lebih dekat ke tepi atas tempat UITableView sebenarnya dimulai. Saya tidak meminta offset besar bukan?
Ada ide?
uitableview
ios7
pengguna798719
sumber
sumber
Jawaban:
Secara default pengontrol tampilan tabel akan meletakkan konten di bawah bilah navigasi sehingga Anda dapat menggulir konten di bawahnya dan melihatnya, dalam keadaan kabur, di bawah bilah navigasi / bilah alat.
Sepertinya Anda memposisikannya pada 44 (mungkin 64) px untuk memindahkannya dari bawah bilah navigasi, tetapi itu sudah mengimbangi ini sehingga Anda mendapatkan celah yang besar.
Pergi ke storyboard / xib di IB dan hapus centang konten acara di bawah barang bilah navigasi.
sumber
Adjust Scroll View insets
, hilangkan tanda centang.Baru iOS 7 pelaksanaan UIViewController memiliki seperangkat pilihan baru yang memungkinkan pengembang untuk memilih jika sistem akan secara otomatis menambahkan insets untuk UIScrollView , UITableView dan derivasi.
Untuk menonaktifkan perilaku ini, hapus centang pada kotak ini untuk semua UIViewControllers yang Anda inginkan di InterfaceBuilder, di UIViewController selected object inspector:
Untuk lebih jelasnya:
sumber
Dari panduan transisi iOS7:
sumber
Adjust Scroll View Insets
kotak centang untuk tata letak pengontrol tampilan.automaticallyAdjustsScrollViewInsets = NO
di pengontrol tampilan.saya memiliki masalah yang sama, setelah menutup 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 dari .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 tersebut.
PD Saya tidak menggunakan autoLayout juga storyboard
semoga ini bisa membantu seseorang!
sumber
itu menyelesaikan masalah saya yang serupa:
sumber
if (floor(NSFoundationVersionNumber) > NSFoundationVersionNumber_iOS_6_1)
Coba gunakan ini
tableView.separatorInset = UIEdgeInsetsZero;
Tentunya, jika Anda mendukung apa pun yang kurang dari iOS7, Anda perlu memastikan bahwa objek merespons pemilih ini sebelum memanggilnya.
sumber
Serius, berubah
contentOffset
bukanlah solusinya. Anda hanya memperbaiki masalah dan tidak memperbaiki penyebabnya. Saya telah menghadapi masalah yang sama dan ternyata tableView yang dikelompokkan memiliki padding di bagian atas. Dalam kasus saya, mengatur tipe menjadi polos telah melakukan triknya.Mudah-mudahan bisa menghemat beberapa menit. Z.
sumber
Dengan iOS 9, tidak ada jawaban lain dari halaman ini yang berfungsi untuk saya (misalnya, hapus centang pada kotak di Storyboard, setel
automaticallyAdjustsScrollViewInsets
keNO
).Solusi saya, saya benar-benar tidak puas adalah ini:
Garis yang sama
viewWillAppear
atauviewDidLoad
tidak efektif.sumber
Adjust Scroll View insets
mencentang kotak centang berfungsi untuk iOS 9.Terkadang, saya mendapatkan
64
celah ketinggian di bagian atas Tampilan Tabel saya saatUIViewController
tertanam di dalam Pengontrol Navigasi.Di masa lalu, saya hanya akan membuat ulang semuanya, berharap kendala menjadi benar setelah batu tulis yang bersih.
TIL: Jika Anda tidak ingin membuat batasan vertikal ke
Top Layout Guide
, Anda dapat menahanOption
tombol untuk mengaksesContainer Margin
.Kemudian pastikan
Top Space to Superview
konstanta disetel ke0
. Setidaknya ini berhasil bagi saya.sumber
Ini berhasil untuk saya:
sumber
Jika Anda menambahkan UIView kosong sebelum UITableView (atau tampilan apa pun dapat digulir seperti ScrollView dan TextView), Anda bisa beruntung.
sumber
Saya memiliki UITableViewController yang disematkan dalam tampilan kontainer. Untuk menyingkirkan 64 titik ruang vertikal yang tidak diinginkan, saya perlu menghapus centang pada 'Sesuaikan Insets Tampilan Gulir' di Interface Builder dan menyetel contentInset UITableView di viewWillAppear UITableViewController saya seperti di bawah ini.
Ukuran ruang vertikal tampaknya cocok dengan tinggi bingkai bilah navigasi dan offset y. Masalahnya hanya terjadi di iOS 7.
sumber
Di Xamarin iOS, saya mengalami masalah ini pada UITableViewController latar belakang tepat setelah dialog modal latar depan ditutup. Dalam proses pindah ke latar depan, UITableViewController memiliki set insets (di suatu tempat oleh iOS):
Kelas ini menyelesaikannya
sumber
Dari waktu ke waktu saya kembali ke situasi yang mengerikan ini, dan saya perhatikan bahwa itu masih belum diketahui. Jadi, untuk kenangan masa depan ...
Akhir-akhir ini, saya sedang memperbaiki solusi ini.
Jangan tanya saya kenapa, saya masih berpikir itu bug jauh di UIKit.
sumber
Jika Anda membuka storyboard, Anda dapat mengubah offset dengan memilih tabel dan di bawah bagian Tampilan Tabel di inspektur Atribut Anda cukup mengubah Insets Pemisah di kiri menjadi 0.
sumber
Saya pikir solusi sebenarnya adalah mengatur batasan atas dan bawah Anda pada tampilan tabel sama dengan topMargin dan bottomMargin. Bukan panduan tata letak atas dan panduan tata letak bawah. Ini memungkinkan Anda untuk menjaga secara otomatisAdjustsScrollViewInsets menjadi true.
sumber
Solusi Swift 3:
sumber
Jika Anda menyematkan TableViewController Anda di NavigationController atau ContainerView
You have to constraint to margins instead of top Layout guide in Storyboard
,.Check constraint to margins when you are doing the constraints
Tidak ada cara lain yang berhasil untuk saya. Saya tidak bisa berkomentar jadi saya hanya mengulangi jawaban Robert Chens.sumber
Saya mencoba beberapa jawaban. Mengubah pengaturan di storyboard menyebabkan masalah riak dengan menu overlay yang muncul dari kiri.
Saya hanya memiliki UIViewController kosong di storyboard, jika tidak, semuanya dihasilkan secara terprogram.
Saya memiliki masalah yang sama dengan UITableView di dalam UIView di dalam UIViewController. Yakni, header bagian mulai terlalu jauh ke bawah saat UIViewController disematkan di Pengontrol Navigasi. Tanpa pengontrol navigasi, semuanya berfungsi dengan baik.
Untuk memperbaiki masalah ini saya membuat sebuah UILabel dan dengan batasan ditempatkan batasan bawah UILabel = batasan teratas dari UIView (sehingga tidak muncul di layar. Sekarang dengan kontrol tambahan (Label baru) TableView berperilaku dengan baik.
sumber
Saya memiliki masalah yang sama di iOS 11 dan xib, UITableviewController dan saya menyelesaikannya seperti di bawah ini
sumber