테이블보기에서 섹션 머리글의 높이를 변경하는 방법을 알고 있습니다. 그러나 첫 번째 섹션 전에 기본 간격을 변경하는 해결책을 찾을 수 없습니다.
지금이 코드가 있습니다.
- (CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section{
if (section == 0){
return 0;
}
return 10;
}
답변
CGFLOAT_MIN
원하는 섹션 높이로 0 대신 반환 하십시오.
0을 반환하면 UITableView가 기본값을 사용합니다. 이것은 문서화되지 않은 동작입니다. 아주 작은 숫자를 반환하면 높이가 0 인 헤더를 효과적으로 얻을 수 있습니다.
스위프트 3 :
func tableView(_ tableView: UITableView, heightForHeaderInSection section: Int) -> CGFloat {
if section == 0 {
return CGFloat.leastNormalMagnitude
}
return tableView.sectionHeaderHeight
}
빠른:
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;
}
답변
당신이 사용하는 경우 tableView
스타일 그룹화 , tableView
자동으로 설정 상단과 하단 세트를. 이를 방지하고 내부 삽입 설정을 방지하려면 머리글 및 바닥 글에 대리자 메서드를 사용하십시오. 0.0을 반환하지 않고CGFLOAT_MIN
.
목표 -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;
}
빠른
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
}
답변
높이가 0 인 테이블 머리글보기를 설정할 수없는 것 같습니다. 결국 다음을 수행했습니다.
- (void)viewWillAppear:(BOOL)animated{
CGRect frame = self.tableView.tableHeaderView.frame;
frame.size.height = 1;
UIView *headerView = [[UIView alloc] initWithFrame:frame];
[self.tableView setTableHeaderView:headerView];
}
답변
이것은 Swift 4 에서 저에게 효과적 이었습니다. UITableView
예를 들어 수정하십시오 viewDidLoad
:
// 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)))
답변
이것을 시도 할 수 있습니다.
에서 loadView
_tableView.sectionHeaderHeight = 0;
그때
-(CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section{
return 0;
}
헤더에 개체가없는 한 제거해야합니다.
섹션 헤더의 크기를 원하는 경우 반환 값만 변경하십시오.
sectionfooter가 제거되지 않은 경우에도 동일합니다.
_tableView.sectionFooterHeight = 0;
과
-(CGFloat)tableView:(UITableView *)tableView heightForFooterInSection:(NSInteger)section{
return 0;
}
글쎄, 이것은 iOS7의 tableview에 대한 내 문제에 대해 작동합니다.
답변
self.tableView.tableHeaderView = [UIView new];
추가 한 후 코드를 제거해야 합니다.
- (CGFloat)tableView:(UITableView *)tableView heightForFooterInSection:(NSInteger)section{
return CGFLOAT_MIN;
}
답변
viewForHeaderInSection
높이에 관계없이 뷰를 사용 하고 반환 할 수 있습니다 .
- (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;
}
}