Saya telah menerapkan kelas sel tampilan tabel kustom yang diwarisi dari UITableViewCell
. Tableview berisi gambar latar belakang, jadi saya ingin latar belakang sel menjadi transparan. Ini terlihat hebat sebelum iOS7.
Namun, di iOS7, sel selalu ditampilkan dengan latar belakang putih.
Bahkan untuk Xcode7, 2015, ada bug di storyboard : Anda harus mengatur warna latar belakang sel dalam kode.
ios
objective-c
cocoa-touch
ios7
Kjuly
sumber
sumber
Jawaban:
Seperti yang dikatakan Apple DOC ( Referensi Kelas UITableViewCell ):
Jadi untuk kasus saya bahwa untuk menunjukkan sel-sel dengan latar belakang transparan, hanya perlu menerapkan metode delegasi pada pengontrol tampilan tabel seperti di bawah ini:
Catatan : Seperti yang dikatakan @null, "... sepertinya ada bug di pembuat antarmuka ..." , saya tidak sepenuhnya yakin apakah bug itu memang ada, tetapi sepertinya begitu karena komentarnya mendapat beberapa suara. Jadi mungkin ada yang salah jika Anda menggunakan IB. :)
sumber
tableView:cellForRowAtIndexPath:
metode ini.Saya menyelidiki sedikit dan menemukan bahwa backgroundColor sel diatur oleh sistem Appearance. Jadi, jika semua sel dalam aplikasi Anda memiliki latar belakang yang jelas, solusi termudah adalah:
Dan bahkan jika mereka memiliki latar belakang yang berbeda, warna jernih tampaknya paling nyaman sebagai standar.
sumber
UITableViewCell
, jadi saya tidak perlu menyediakan superclass dengan initializer untuk mengatur warna BGclearColor
, tapi coba tebak? Itu tidak berhasil ... Maksudku, MENGAPA, APPLE?Tulis ini dalam metode cellForRowAtIndexPath Anda sebelum mengembalikan sel;
sumber
Warna latar belakang default suatu
UITableViewCell
di iOS 7 adalah putih.Anda harus mengatur
backgroundColor
properti di suatu tempat dalam kode Anda. Misalnya, atur setelah sel yang baru dibuat.sumber
Saya benar-benar menemukan bahwa masalah muncul dari warna Latar Belakang UITableView yang tidak disetel untuk dihapus. Jika Anda mengubah warna Latar Belakang UITableViewCell menjadi jelas dan Anda menemukan Anda masih melihat putih, pastikan bahwa warna latar belakang UITableView diatur untuk dihapus (atau apa pun yang Anda inginkan).
Dalam Swift
sumber
Ini jelas merupakan bug iOS. Di iOS 8, mengatur warna latar belakang
Interface Builder
berfungsi dengan baik untuk iPhone, tetapi di iPad selaluwhiteColor
. Untuk memperbaikinya, dalamcellForIndexPath
pesan sumber data, masukkan ini ke:cell.backgroundColor = cell.backgroundColor
Dan itu akan berhasil. Inilah tepatnya mengapa saya mengatakan itu bug karena kode itu sendiri cukup banyak omong kosong, tetapi berhasil.
sumber
Bisa jadi UITableViewCell Anda dipilih secara default .. Anda dapat mengonfirmasi ini menggunakan debugger visual baru Xcode 6s (atau mencari tahu persis tampilan mana yang menyebabkan sel putih ini muncul).
Menariknya, setelah mengetahui hal ini .. mengatur warna latar belakang sel yang dipilih untuk menghapus masih tidak berfungsi .. melakukan penelitian lebih lanjut, ternyata saya hanya perlu memodifikasi gaya pemilihan ketika saya membuat sel khusus ini:
sumber
Saya menemukan bahwa tidak ada yang di atas bekerja dari XCode 5.1.1, iOS 7.1.
Jika Anda menggunakan Pembuat Antarmuka dengan sel prototipe, pilih sel prototipe, lalu dari pemilih atribut di bagian Tampilan, ubah bentuk latar belakang default menjadi Clear Color:
Ini sepertinya bekerja dengan baik. Tidak ada perubahan kode di atas yang diperlukan, baik - ini adalah solusi IB murni.
sumber
Jawaban yang diterima tidak memperbaiki masalah bagi saya. Saya harus melakukan ini:
Dari metode class source data tabel cellForRowAtIndexPath:
sumber
cell = [tableView dequeueReusableCellWithIdentifier:<#Reuse ID#> forIndexPath:indexPath]
. Dalam versi sebelumnya Anda menjatuhkan argumen indexPath dan kemudian menguji nil, instantiatinginitWithStyle:reuseIdentifier
sesuai dengan potongan kode Anda dalam case nil.Bagi saya pengaturan
cell.backgroundColor = cell.contentView.backgroundColor;
dalamtableView:willDisplayCell:forRowAtIndexPath:
atautableView:cell:forRowAtIndexPath:
melakukan pekerjaan.Ini karena saya mengatur warna latar belakang contentView di Interface Builder seperti yang diinginkan.
sumber
Saat menambahkan objek UI ke sel, Xcode 5 / IOS 7 menambahkan "Content View" baru yang akan menjadi superview semua elemen di dalam sel. Untuk mengatur warna latar belakang sel, atur warna latar belakang dari Tampilan Konten ini. Solusi di atas tidak bekerja untuk saya tetapi yang ini bekerja dengan baik untuk saya.
sumber
Solusi Swift 1.2:
Cukup tambahkan definisi eksplisit untuk warna latar belakang sel Anda seperti:
sumber
Punya masalah yang sama, harus
tambahkan ini ke kode untuk memperbaikinya
sumber
Anda juga dapat menggunakan kode warna untuk membuat UITableView Cell Anda menguntungkan.
Ini adalah kode untuk menerapkan metode kode warna:
sumber