Saya tahu cara mengubah tinggi header bagian dalam tampilan tabel. Tetapi saya tidak dapat menemukan solusi apa pun untuk mengubah spasi default sebelum bagian pertama.
Sekarang saya memiliki kode ini:
- (CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section{
if (section == 0){
return 0;
}
return 10;
}
ios
uikit
tableview
uitableview
circuitlego
sumber
sumber
Jawaban:
Kembalikan,
CGFLOAT_MIN
bukan 0 untuk tinggi bagian yang Anda inginkan.Cepat 3:
func tableView(_ tableView: UITableView, heightForHeaderInSection section: Int) -> CGFloat { if section == 0 { return CGFloat.leastNormalMagnitude } return tableView.sectionHeaderHeight }
Cepat:
func tableView(tableView: UITableView, heightForHeaderInSection section: Int) -> CGFloat { if section == 0 { return CGFloat.min } return tableView.sectionHeaderHeight }
Obj-C:
- (CGFloat) tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section { if (section == 0) return CGFLOAT_MIN; return tableView.sectionHeaderHeight; }
sumber
CGFloat.leastNormalMagnitude
estimatedHeightForHeaderInSection
, aplikasi akan crash.Jika Anda menggunakan
tableView
gaya yang dikelompokkan ,tableView
secara otomatis mengatur insets atas dan bawah. Untuk menghindarinya dan menghindari pengaturan insets internal, gunakan metode delegasi untuk header dan footer. Jangan pernah mengembalikan 0,0 tetapiCGFLOAT_MIN
.Objective-C
- (CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section { // Removes extra padding in Grouped style return CGFLOAT_MIN; } - (CGFloat)tableView:(UITableView *)tableView heightForFooterInSection:(NSInteger)section { // Removes extra padding in Grouped style return CGFLOAT_MIN; }
Cepat
func tableView(_ tableView: UITableView, heightForHeaderInSection section: Int) -> CGFloat { // Removes extra padding in Grouped style return CGFloat.leastNormalMagnitude } func tableView(_ tableView: UITableView, heightForFooterInSection section: Int) -> CGFloat { // Removes extra padding in Grouped style return CGFloat.leastNormalMagnitude }
sumber
viewForHeaderInSection
header sepenuhnya menghilang.Tampaknya saya tidak dapat menyetel tampilan tajuk tabel dengan ketinggian 0. Saya akhirnya melakukan hal berikut:
- (void)viewWillAppear:(BOOL)animated{ CGRect frame = self.tableView.tableHeaderView.frame; frame.size.height = 1; UIView *headerView = [[UIView alloc] initWithFrame:frame]; [self.tableView setTableHeaderView:headerView]; }
sumber
- (CGFloat) tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section { return 1.0f; }
Ini berhasil untuk saya dengan Swift 4 . Ubah
UITableView
contoh Anda diviewDidLoad
:// Remove space between sections. tableView.sectionHeaderHeight = 0 tableView.sectionFooterHeight = 0 // Remove space at top and bottom of tableView. tableView.tableHeaderView = UIView(frame: CGRect(origin: .zero, size: CGSize(width: 0, height: CGFloat.leastNormalMagnitude))) tableView.tableFooterView = UIView(frame: CGRect(origin: .zero, size: CGSize(width: 0, height: CGFloat.leastNormalMagnitude)))
sumber
Anda dapat mencoba ini:
Dalam
loadView
_tableView.sectionHeaderHeight = 0;
Kemudian
-(CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section{ return 0; }
Ini harus dihapus selama Anda tidak memiliki objek apa pun di header ...
Dan jika Anda ingin beberapa ukuran bagian kepala, maka ubah hanya nilai yang dikembalikan.
sama jika Anda tidak menghapus bagianfooter.
_tableView.sectionFooterHeight = 0;
dan
-(CGFloat)tableView:(UITableView *)tableView heightForFooterInSection:(NSInteger)section{ return 0; }
Nah, ini berfungsi untuk masalah saya dengan tampilan tabel di iOS7.
sumber
Anda harus menghapus kode tersebut
self.tableView.tableHeaderView = [UIView new];
setelah Anda menambahkan- (CGFloat)tableView:(UITableView *)tableView heightForFooterInSection:(NSInteger)section{ return CGFLOAT_MIN; }
sumber
footer
ketinggian yang menyebabkan masalah dalam kasus saya. Terimakasih atas bantuannya.Anda dapat menggunakan
viewForHeaderInSection
dan mengembalikan tampilan dengan ketinggian berapa pun.- (UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section { int height = 30 //you can change the height if(section==0) { UIView *view = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 320, height)]; return view; } }
sumber
Dalam 2.0 cepat
func tableView(tableView: UITableView, estimatedHeightForHeaderInSection section: Int) -> CGFloat { return yourHeight }
sumber
Di Swift 4
Hapus bantalan ekstra atas dalam tampilan tabel yang dikelompokkan.
Di sini tinggi diberikan 1 sebagai tinggi minimal untuk tajuk bagian karena Anda tidak dapat memberikan 0 karena tampilan tabel akan menggunakan margin atas default jika ditetapkan ketinggian nol.
func tableView(_ tableView: UITableView, heightForHeaderInSection section: Int) -> CGFloat { return 1 } func tableView(_ tableView: UITableView, viewForHeaderInSection section: Int) -> UIView? { return UIView() }
sumber
Contoh viewForHeaderInSection:
- (UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section UIView *view = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 320, 118)]; view.backgroundColor = COLOR_DEFAULT; NSString* key = [self.tableKeys objectAtIndex:section]; NSArray *result = (NSArray*)[self.filteredTableData objectForKey:key]; SZTicketsResult *ticketResult = [result objectAtIndex:0]; UIView *smallColoredView = [[UIView alloc] initWithFrame:CGRectMake(0, 5, 320, 3)]; smallColoredView.backgroundColor = COLOR_DEFAULT_KOSTKY; [view addSubview:smallColoredView]; UIView *topBackgroundView = [[UIView alloc] initWithFrame:CGRectMake(0, 8, 320, 40)]; topBackgroundView.backgroundColor = [UIColor colorWithRed:255.0/255.0 green:248.0/255.0 blue:174.0/255.0 alpha:1]; [view addSubview:topBackgroundView]; UILabel *totalWinnings = [[UILabel alloc] initWithFrame:CGRectMake(10, 8, 300, 40)]; totalWinnings.text = ticketResult.message; totalWinnings.minimumFontSize = 10.0f; totalWinnings.numberOfLines = 0; totalWinnings.backgroundColor = [UIColor clearColor]; totalWinnings.font = [UIFont boldSystemFontOfSize:15.0f]; [view addSubview:totalWinnings]; UIView *bottomBackgroundView = [[UIView alloc] initWithFrame:CGRectMake(0, 55, 320, 58)]; bottomBackgroundView.backgroundColor = [UIColor colorWithRed:255.0/255.0 green:248.0/255.0 blue:174.0/255.0 alpha:1]; [view addSubview:bottomBackgroundView]; UILabel *numberOfDraw = [[UILabel alloc] initWithFrame:CGRectMake(10, 55, 290, 58)]; numberOfDraw.text = [NSString stringWithFormat:@"sometext %@",[ticketResult.title lowercaseString]];; numberOfDraw.minimumFontSize = 10.0f; numberOfDraw.numberOfLines = 0; numberOfDraw.backgroundColor = [UIColor clearColor]; numberOfDraw.font = [UIFont boldSystemFontOfSize:15.0f]; [view addSubview:numberOfDraw]; return view;
sumber
Dua baris ini sudah cukup.
tableView.sectionHeaderHeight = 0 tableView.sectionFooterHeight = 0
Bagi saya, ini berfungsi di Xcode 12.2, iOS 14.2
sumber