Saya memiliki beberapa tabel (gaya dikelompokkan) di aplikasi iphone saya (hanya pada bagian layar dan ditambahkan dengan Interface Builder
, tidak disubklasifikasikan dari UITableViewController
) bahwa 80% dari waktu kecil dan akan cocok di layar. Ketika tabel pas di layar, saya ingin menonaktifkan pengguliran, untuk membuatnya sedikit lebih bersih. Tetapi jika tabel keluar dari layar (ketika baris kemudian ditambahkan ke dalamnya), saya ingin mengaktifkan gulir lagi (karena jika tidak Anda tidak dapat melihat konten itu.)
Apakah ada cara untuk melakukan ini? Sepertinya saya tidak bisa memahaminya. Saya tahu harus melakukan:
tableView.scrollEnabled = NO;
tapi saya tidak yakin di mana, atau jika saya harus menghitung ukuran objek tabel atau sesuatu untuk mendapatkan ini berfungsi.
Pembaruan : Inilah solusi yang akhirnya berhasil untuk saya:
if (table.contentSize.height < table.frame.size.height) {
table.scrollEnabled = NO;
}
else {
table.scrollEnabled = YES;
}
Saya menjalankan kode ini setelah menelepon reloadData
di atas meja, dan menghitung ukuran yang tepat dan tampaknya berfungsi.
table.frame.size.height
adalah ukuran sebenarnya dari objek (Anda bisa melihatnya di Interface Builder
) ditampilkan di layar, sedangkan table.contentSize.height
adalah ketinggian: header, footer, dan tinggi setiap sel ditambahkan bersama-sama.
sumber
Jawaban:
Saya pikir Anda ingin mengatur
sumber
interface builder
dengan melepas bouncing dan bouncing secara horizontal / vertikal.Anda dapat memverifikasi jumlah sel yang terlihat menggunakan fungsi ini:
Metode ini akan mengembalikan array dengan sel-sel yang terlihat, sehingga Anda dapat menghitung jumlah objek dalam array ini dan membandingkannya dengan jumlah objek di tabel Anda .. jika itu sama .. Anda dapat menonaktifkan pengguliran menggunakan:
Seperti yang disebutkan @Ginny .. kita akan memiliki masalah dengan sel yang terlihat sebagian, jadi solusi ini berfungsi lebih baik dalam hal ini:
Jika Anda menggunakan autoLayout solusi ini melakukan pekerjaan:
sumber
if (table.contentSize.height < table.frame.size.height)
>> lihat edit di posting asli.Dalam Swift:
sumber
Jadi ada beberapa jawaban dan memerlukan semua konten sekaligus, jadi saya menambahkan jawaban ini:
Jika Anda menggunakan AutoLayout, dengan menyetel ini hanya akan berfungsi untuk Anda:
tableView.alwaysBounceVertical = false
Temukan saja opsi ini dan
untick
"Bounce Vertically
".Inilah rujukannya:
Jika Anda tidak menggunakan AutoLayout:
sumber
coba ini
sumber
Anda dapat mengatur mengaktifkan / menonaktifkan bouncing atau menggulir tampilan tabel dengan memilih / membatalkan pilihan ini di area Scroll View
sumber
Anda dapat mengedit ini di storyboard Anda (jika Anda menggunakannya). Di bawah tampilan tabel ada kotak centang yang mengatakan "Scrolling Enabled". Hapus centang dan selesai.
sumber
// Enable scrolling based on content height self.tableView.scrollEnabled = table.contentSize.height > table.frame.size.height;
sumber
Ketinggian default adalah 44.0f untuk sel tampilan tabel yang saya percaya. Anda harus memiliki sumber data di Array? Kemudian cukup periksa apakah
[array count]*44.0f
melampaui batas frame dan jika demikian aturtableview.scrollEnabled = NO
, lain atur ke YA. Lakukan di mana Anda mencari sumber data untuk tampilan tabel tertentu.sumber