Saya mencoba mengubah warna latar belakang UITableViewHeaderFooterView. Meskipun tampilan muncul, warna latar belakang tetap menjadi warna default. Saya mendapatkan log dari xcode yang mengatakan:
Menyetel warna latar belakang pada UITableViewHeaderFooterView sudah tidak digunakan lagi. Gunakan contentView.backgroundColor sebagai gantinya.
Namun, tidak ada opsi berikut yang berfungsi:
myTableViewHeaderFooterView.contentView.backgroundColor = [UIColor blackColor];
myTableViewHeaderFooterView.backgroundView.backgroundColor = [UIColor blackColor];
myTableViewHeaderFooterView.backgroundColor = [UIColor blackColor];
Saya juga mencoba mengubah warna latar belakang tampilan di file xib.
Ada saran? Terima kasih.
iphone
ios
xcode
uitableview
Chun
sumber
sumber
Jawaban:
Anda harus menggunakan myTableViewHeaderFooterView.tintColor, atau menetapkan tampilan latar belakang kustom ke myTableViewHeaderFooterView.backgroundView.
sumber
tintColor
tidak bekerja di iOS7. Saya dapat mengubah warna hanya dengan menetapkan tampilan kustom:myTableViewHeaderFooterView.backgroundView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"myImage.png"]];
iOS 8, 9, 10, 11 ...
Satu-satunya cara untuk menyetel warna apa pun (dengan alfa apa pun) adalah dengan menggunakan
backgroundView
:Cepat
Obj-C
Tanggapan untuk Komentar
Tak satu pun dari opsi lain ini bekerja dengan andal (terlepas dari komentar di bawah)
yang
backgroundView
diubah ukurannya secara otomatis. (Tidak perlu menambahkan batasan)Kontrol alfa dengan
UIColor(white: 0.5, alpha: 0.5)
ataubackgroundView.alpha = 0.5
.(tentu saja, warna apa pun bisa digunakan)
Saat menggunakan XIB , buat tampilan root a
UITableViewHeaderFooterView
dan hubungkan secarabackgroundView
terprogram:Daftar dengan:
Muat dengan:
↻ ulangi animasi
► Temukan solusi ini di GitHub dan detail tambahan di Swift Recipes .
sumber
view.BackgroundView = new UIView(view.Bounds) { BackgroundColor = UIColor.Clear };
Setting the background color on UITableViewHeaderFooterView has been deprecated. Please use contentView.backgroundColor instead.
Di iOS 7
contentView.backgroundColor
bekerja untuk saya,tintColor
tidak.Meskipun
clearColor
tidak berhasil untuk saya, solusi yang saya temukan adalah menyetelbackgroundView
properti ke gambar transparan. Mungkin itu akan membantu seseorang:sumber
Pastikan Anda menyetel backgroundColor
contentView
untukUITableViewHeaderFooterView
:Maka itu akan berhasil.
sumber
Bagi saya, saya mencoba semua yang disebutkan di atas tetapi masih mendapatkan peringatan "Menyetel warna latar belakang pada UITableViewHeaderFooterView sudah tidak digunakan lagi. Harap gunakan contentView.backgroundColor sebagai gantinya." kemudian saya mencoba ini: di dalam file xib warna latar belakang untuk tampilan header dipilih untuk menghapus warna daripada default setelah saya mengubahnya ke default peringatan itu hilang.
sumber
Untuk warna yang jelas, saya gunakan
Sepertinya baik-baik saja bagiku.
sumber
backgroundView = UIView()
dan kemudianbackgroundColor = .clear
adalah satu-satunya solusi yang berfungsi. Terima kasih.Untuk warna latar belakang yang solid, pengaturan
contentView.backgroundColor
seharusnya cukup:Untuk warna dengan transparansi, termasuk
.clear
warna, ini tidak lagi berfungsi:Untuk header bagian transparan penuh, setel
backgroundView
properti ke tampilan kosong:Namun, waspadai kemungkinan efek sampingnya. Kecuali jika tampilan tabel disetel ke "Dikelompokkan", header bagian akan dipasang di bagian atas saat di-scroll ke bawah. Jika header bagian transparan, konten sel akan terlihat, yang mungkin tidak terlihat bagus.
Di sini, header bagian memiliki latar belakang transparan:
Untuk mencegah hal ini, lebih baik menyetel latar belakang tajuk bagian ke warna solid (atau gradien) yang cocok dengan latar belakang tampilan tabel atau pengontrol tampilan Anda.
Di sini, header bagian memiliki latar belakang gradien yang sepenuhnya buram:
sumber
Dalam pembuat antarmuka, tarik .xib Anda, di elemen teratas, di inspektur atribut setel warna latar belakang ke default. Lalu pergi ke Tampilan Konten dan atur warna latar belakang di sana (rujuk ke https://github.com/jiecao-fm/SwiftTheme/issues/24 ).
sumber
Di iOS9
headerView.backgroundView.backgroundColor
bekerja untuk saya:Di iOS8 saya menggunakan
headerView.contentView.backgroundColor
tanpa masalah, tetapi sekarang dengan iOS 9, saya mendapatkan masalah aneh yang membuat warna latar belakang tidak memenuhi seluruh ruang sel. Jadi saya coba sajaheaderView.backgroundColor
dan saya mendapat kesalahan yang sama dari OP.Jadi sekarang semuanya bekerja dengan baik dan tanpa peringatan dengan menggunakan
headerView.backgroundView.backgroundColor
sumber
jika Anda membuat subkelas khusus
UITableViewHeaderFooterView
denganxib
file maka Anda harus menggantisetBackgroundColor
. Kosongkan.Dan ini akan menyelesaikan masalah Anda.
sumber
Jika Anda menyesuaikan sel header bagian dengan Storyboard / Nib , maka pastikan warna latar belakangnya adalah default untuk tampilan "Table Section Header".
Dan jika Anda membuat subkelas
UITableViewHeaderFooterView
, dan menggunakan nib, maka yang harus Anda lakukan adalah membuat aIBOutlet
untuk tampilan konten, dan beri nama misalnya.containerView
. Jangan bingung dengan inicontentView
, yang merupakan induk dari tampilan penampung ini.Dengan pengaturan itu, Anda mengubah warna latar belakang
containerView
.sumber
Saya mencoba dengan rantai lookWhenContainedIn, dan itu berhasil untuk saya.
sumber
mungkin karena backgroundView tidak ada
itu berhasil untuk saya.
sumber
iOS 12, Swift 5. Jika Anda bersedia (atau mencoba!) untuk menggunakan proxy tampilan, solusi berikut ini berfungsi:
atau
sumber
Lupakan kesulitan.
Tambahkan ke proyek Anda
UITableViewHeaderFooterView+BGUpdate.swift
dengan kode di bawah ini:Pemakaian sederhana seperti yang Anda harapkan sebelumnya:
Contoh penggunaan :
1) Di delegasi
tableView:viewForHeaderInSection:
:atau
2) Di kelas tampilan tajuk khusus Anda:
sumber
Menyetel BackgroundView dengan warna bening berfungsi dengan baik untuk header yang terlihat. Jika tabel di-scroll untuk menampilkan header di bagian bawah, solusi ini gagal.
Tabel PSMy hanya terdiri dari header tanpa sel apa pun.
sumber
Cepat:
sumber
Buat UIView dan setel warna background, lalu setel ke self.backgroundView.
sumber
Saya merasa terdorong untuk membagikan pengalaman saya. Saya memiliki kode ini yang berfungsi dengan baik dengan iOS 10 dan iOS 11
headerView?.contentView.backgroundColor = .lightGray
Kemudian saya tiba-tiba memutuskan untuk menerapkan aplikasi untuk iOS 9 karena ada beberapa perangkat (iPad mini beberapa generasi yang lebih tua tidak memperbarui ke OS apa pun di luar 9) - Satu-satunya solusi yang berfungsi untuk semua iOS 9, 10 dan 11 adalah untuk menentukan tampilan dasar untuk header yang kemudian berisi semua subview header lainnya, menghubungkannya dari storyboard dan mengatur
backgroundColor
tampilan dasar itu.Anda akan ingin berhati-hati saat memasang kabel untuk tidak memanggilnya:
backgroundView
karena sudah ada properti dengan nama itu di beberapasuperclass
. Aku menelepon milikkucontainingView
Juga saat memasang kabel kontrol outlet klik pada tampilan
Document Outline
untuk memastikan itu tidak terhubungfile owner
sumber
sumber