Dapatkah seseorang tolong ajari saya tentang cara termudah untuk mengubah ukuran font teks di header bagian UITableView?
Saya memiliki judul bagian diimplementasikan menggunakan metode berikut:
- (NSString *)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section
Lalu, saya mengerti bagaimana cara berhasil mengubah tinggi bagian tajuk menggunakan metode ini:
- (CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section
Saya memiliki sel UITableView yang diisi menggunakan metode ini:
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
Namun, saya buntu bagaimana cara benar-benar meningkatkan ukuran font - atau dalam hal gaya font - teks header bagian?
Bisakah seseorang tolong? Terima kasih.
Jawaban:
Sayangnya, Anda mungkin harus menimpa ini:
Dalam Objective-C:
Dalam Swift:
Coba sesuatu seperti ini:
Dalam Objective-C:
Dalam Swift:
sumber
tableView:heightForHeaderInSection:
yang dapat menjadi rumit.Cara lain untuk melakukan ini adalah menanggapi
UITableViewDelegate
metodewillDisplayHeaderView
. Tampilan yang berlalu sebenarnya adalah instance dari aUITableViewHeaderFooterView
.Contoh di bawah ini mengubah font, dan juga menempatkan teks judul di tengah secara vertikal dan horizontal di dalam sel. Perhatikan bahwa Anda juga harus merespons agar
heightForHeaderInSection
perubahan ketinggian header Anda dicatat dalam tata letak tampilan tabel. (Yaitu, jika Anda memutuskan untuk mengubah tinggi header dalamwillDisplayHeaderView
metode ini .)Anda kemudian dapat menanggapi
titleForHeaderInSection
metode untuk menggunakan kembali header yang dikonfigurasi ini dengan judul bagian yang berbeda.Objektif-C
Cepat 1.2
(Catatan: jika view controller Anda adalah turunan dari a
UITableViewController
, ini harus dinyatakan sebagaioverride func
.)Swift 3.0
Kode ini juga memastikan bahwa aplikasi tidak macet jika tampilan tajuk Anda adalah sesuatu selain UITableViewHeaderFooterView:
sumber
header.textLabel.font = [UIFont preferredFontForTextStyle:UIFontTextStyleHeadline];
dan / atauheader.detailTextLabel.font = [UIFont preferredFontForTextStyle:UIFontTextStyleHeadline];
bersama dengan langkah-langkah lain yang diperlukan (lihat di sini: captechconsulting.com/blog/john-szumski/… )Sementara jawaban mosca1337 adalah solusi yang benar, berhati-hatilah dengan metode itu. Untuk tajuk dengan teks lebih panjang dari satu baris, Anda harus melakukan perhitungan ketinggian tajuk
tableView:heightForHeaderInSection:
yang rumit.Metode yang lebih disukai adalah menggunakan API penampilan:
Ini akan mengubah font, sementara masih meninggalkan meja untuk mengelola ketinggian itu sendiri.
Untuk hasil yang optimal, subkelas tampilan tabel, dan tambahkan ke rantai penahanan (dalam
appearanceWhenContainedIn:
) untuk memastikan font hanya diubah untuk tampilan tabel tertentu.sumber
- tableView:viewForHeaderInSection:
kanan? Dalam hal ini font dapat diatur di sana. Inilah yang dilakukan solusi @ mosca1337.UILabel.appearance(whenContainedInInstancesOf: [UITableViewHeaderFooterView.self]).font = UIFont.boldSystemFont(ofSize: 28)
Untuk iOS 7 saya menggunakan ini,
Berikut adalah versi Swift 3.0 dengan mengubah ukuran header
sumber
Swift 3:
Cara termudah untuk menyesuaikan ukuran saja :
sumber
Swift 2.0 :
Terapkan viewForHeaderInSection, seperti:
Terapkan willDisplayHeaderView, seperti:
Ingat: Jika Anda menggunakan sel statis, header bagian pertama diisi lebih tinggi daripada header bagian lainnya karena bagian atas UITableView; untuk memperbaiki ini:
Terapkan heightForHeaderInSection, seperti:
sumber
Swift 4 versi Leo Natan jawabannya adalah
Jika Anda ingin mengatur font khusus yang dapat Anda gunakan
sumber
Dengan metode ini Anda dapat mengatur ukuran font, gaya font dan latar belakang Header juga. ada 2 metode untuk ini
Metode pertama
Metode Kedua
sumber
Swift 2:
Sebagai OP bertanya, hanya menyesuaikan ukuran, tidak menetapkan itu sebagai sistem huruf tebal atau apa pun:
sumber
Ini solusi saya dengan cepat 5.
Untuk sepenuhnya mengontrol tampilan bagian tajuk, Anda perlu menggunakan metode tableView (: viewForHeaderInsection: :) di controller Anda, seperti yang ditunjukkan oleh posting sebelumnya. Namun, ada langkah lebih lanjut: untuk meningkatkan kinerja, apple merekomendasikan untuk tidak menghasilkan tampilan baru setiap kali tetapi untuk menggunakan kembali tampilan header, seperti menggunakan kembali sel tabel. Ini dengan metode tableView.dequeueReusableHeaderFooterView (withIdentifier:). Tetapi masalah yang saya miliki adalah setelah Anda mulai menggunakan fungsi penggunaan kembali ini, font tidak akan berfungsi seperti yang diharapkan. Hal-hal lain seperti warna, penjajaran semua baik-baik saja tetapi hanya font Ada beberapa diskusi tetapi saya membuatnya bekerja seperti berikut.
Masalahnya adalah tableView.dequeueReusableHeaderFooterView (withIdentifier :) tidak seperti tableView.dequeneReuseCell (:) yang selalu mengembalikan sel. Yang pertama akan mengembalikan nol jika tidak ada yang tersedia. Bahkan jika itu mengembalikan tampilan header kembali, itu bukan tipe kelas asli Anda, tetapi UITableHeaderFooterView. Jadi, Anda perlu melakukan penilaian dan bertindak sesuai dengan kode Anda sendiri. Pada dasarnya, jika nihil, dapatkan tampilan tajuk baru. Jika tidak nol, paksakan untuk melakukan cast agar Anda dapat mengontrol.
sumber