Saya ingin menyesuaikan latar belakang (dan mungkin juga perbatasan) dari semua UITableViewCells dalam UITableView saya. Sejauh ini saya belum dapat menyesuaikan hal ini, jadi saya memiliki banyak sel latar belakang putih yang merupakan default.
Apakah ada cara untuk melakukan ini dengan iPhone SDK?
UITableViewCellAccessoryCheckmark
, misalnya? Terima kasih.cell.textLabel.backgroundColor = [UIColor clearColor];
Berikut adalah cara paling efisien yang saya temui untuk menyelesaikan masalah ini, gunakan metode delegasi willDisplayCell (ini menangani warna putih untuk latar belakang label teks juga saat menggunakan cell.textLabel.text dan / atau cell.detailTextLabel.text ):
Ketika metode pendelegasian ini disebut warna sel dikontrol melalui sel daripada tampilan tabel, seperti ketika Anda menggunakan:
Jadi di dalam tubuh metode delegasi sel tambahkan kode berikut untuk mengganti warna sel atau cukup gunakan pemanggilan fungsi untuk membuat semua sel tabel warna yang sama.
Solusi ini bekerja dengan baik dalam keadaan saya ...
sumber
cell.backgroundColor = UIColor.clearColor
Ini sangat sederhana, karena OS 3.0 hanya mengatur warna latar belakang sel dalam metode willDisplayCell. Anda tidak boleh mengatur warna di cellForRowAtIndexPath.
Ini berfungsi baik untuk gaya polos dan dikelompokkan:
Kode:
PS: Di sini ekstrak dokumentasi untuk willDisplayCell:
Saya menemukan informasi ini di pos ini dari colionel . Terima kasih dia
sumber
Pendekatan terbaik yang saya temukan sejauh ini adalah untuk mengatur tampilan latar belakang sel dan latar belakang yang jelas dari subview sel. Tentu saja, ini terlihat bagus di meja dengan gaya terindeks saja, tidak peduli dengan atau tanpa aksesori.
Berikut adalah contoh di mana latar belakang sel terengah-engah kuning:
sumber
Sederhananya dalam file kelas delegasi UITableView Anda (.m):
sumber
Saya setuju dengan Seba, saya mencoba untuk mengatur warna baris bergantian dalam metode delegasi rowForIndexPath tetapi mendapatkan hasil yang tidak konsisten antara 3,2 dan 4,2. Berikut ini berhasil bagi saya.
sumber
Setelah mencoba semua solusi yang berbeda, metode berikut adalah yang paling elegan. Ubah warna dalam metode delegasi berikut:
sumber
vlado.grigorov memiliki beberapa saran yang bagus - cara terbaik adalah membuat backgroundView, dan memberikan warna, mengatur segalanya untuk clearColor. Juga, saya pikir cara itu adalah satu-satunya cara untuk membersihkan warna dengan benar (coba sampelnya - tetapi atur 'clearColor' alih-alih 'yellowColor'), yang merupakan apa yang saya coba lakukan.
sumber
Menyesuaikan latar belakang sel tampilan tabel akhirnya menjadi dan "semua atau tidak sama sekali" pendekatan. Sangat sulit untuk mengubah warna atau gambar yang digunakan untuk latar belakang sel konten dengan cara yang tidak terlihat aneh.
Alasannya adalah bahwa sel benar-benar menjangkau lebar tampilan. Sudut bundar hanyalah sebagian dari gaya gambarnya dan tampilan konten berada di area ini.
Jika Anda mengubah warna sel konten Anda akan berakhir dengan bit putih terlihat di sudut-sudut. Jika Anda mengubah warna seluruh sel, Anda akan memiliki blok warna yang membentang lebar tampilan.
Anda pasti dapat menyesuaikan sel, tetapi itu tidak semudah yang Anda pikirkan pada awalnya.
sumber
Buat tampilan dan atur ini sebagai tampilan latar belakang sel
sumber
Untuk memperluas jawaban N.Berendt - Jika Anda ingin mengatur warna sel berdasarkan pada beberapa keadaan dalam objek data sel yang sebenarnya, pada saat itu Anda mengonfigurasi sisa informasi untuk sel tabel, yang biasanya ketika Anda berada di metode cellForRowAtIndexPath, Anda dapat melakukan ini dengan mengganti metode willDisplayCell untuk mengatur warna latar belakang sel dari warna latar belakang tampilan konten - ini dapat mengatasi masalah latar belakang tombol pengungkapan dll. tidak benar tetapi masih memungkinkan Anda mengontrol warna dalam metode cellForRowAtIndexPath di mana Anda melakukan semua kustomisasi sel Anda yang lain.
Jadi: Jika Anda menambahkan metode ini ke delegasi tampilan tabel Anda:
Kemudian dalam metode cellForRowAtIndexPath Anda dapat Anda lakukan:
Ini menghemat harus mengambil objek data Anda lagi dalam metode willDisplayCell dan juga menyimpan memiliki dua tempat di mana Anda menyesuaikan / kustomisasi sel tabel Anda - semua kustomisasi bisa masuk dalam metode cellForRowAtIndexPath.
sumber
Buat gambar untuk digunakan sebagai latar belakang dengan Photoshop atau gimp dan beri nama myimage. Kemudian, tambahkan metode ini ke kelas tableViewController Anda:
Ini juga akan berfungsi jika Anda telah mengatur UITableView ke kustom di inspektur atribut.
sumber
Solusi saya adalah menambahkan kode berikut ke acara cellForRowAtIndexPath:
Bekerja dalam keadaan apa pun, bahkan dengan tombol pengungkapan, dan lebih baik untuk logika Anda untuk bertindak pada keadaan warna sel di cellForRowAtIndexPath daripada di event cellWillShow, saya pikir.
sumber
Subkelas UITableViewCell dan tambahkan ini dalam implementasi:
sumber
sumber
Ini akan bekerja di Xcode terbaru.
sumber
Coba ini:
sumber