UITableView에서 섹션 헤더의 기본 높이


125

UITableView에서 첫 번째 헤더의 높이를 설정하고 싶습니다. 다른 헤더의 경우 기본 높이로 유지하고 싶습니다. 아래 코드에서 "someDefaultHeight"대신 어떤 값 / 상수를 입력 할 수 있습니까?

- (CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section
{
    if (section == 0)
        return kFirstHeaderHeight;

    return someDefaultHeight;
}

감사


당신이 만족할 때까지 왜 다른 가치를 시도하지 않습니까?
Daniel

4
@Daniel-Apple이 기본 행 높이 값을 변경하기로 결정한 경우 앱 이이 값을 임의의 양으로 하드 코딩하지 않도록해야합니다. 이 정보가 어딘가에 선언되면 상수에서 꺼내는 것이 가장 좋습니다.
rein

답변:


204

iOS 5.0 이상에서는 대부분의 대리자 메서드에서 UITableViewAutomaticDimension을 반환 할 수 있습니다. 설명서 페이지 하단에 있습니다.

- (CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section
{
    if(section == CUSTOM_SECTION)
    {
        return CUSTOM_VALUE;
    }
    return UITableViewAutomaticDimension;
}

1
hmm .. 나에 관해서 UITableViewAutomaticDimension-1(하드 코딩 된 const)를 반환 하고 내 섹션이 전혀 보이지 않습니다 UITableView.
skywinder

UITableViewAutomaticDimension-1을 표시 NSLog합니까?
S1U

30
이 방법 - (NSString *)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section은 다음을 사용하는 경우에만 작동 합니다. - (UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section메소드를 구현하는 경우 작동하지 않습니다.
SuperSaiyen

2
이 방법과 추정 대리자 메서드를 구현하고 UITableViewAutomaticDimension높이를 0으로 설정하면 주목할 가치 가 있습니다.
Sam Soffes

4
@SuperSaiyen- viewForHeaderInSection설정 만하면됩니다estimatedSectionHeaderHeight
Robert

48

내 응용 프로그램의 기본값을 확인하면 그룹 테이블의 경우 기본값은 22이고 그룹화되지 않은 테이블의 경우 기본값은 10입니다.

tableview에서 sectionHeaderHeight 속성의 값을 확인하면 알려줍니다.


1
고마워 ... 난이 하드 코딩합니다. 이 값에는 상수가 있었으면 좋겠다.
rein

3
이것들은 거꾸로 있습니다. UITableViewStyleGrouped22과 UITableViewStylePlain10입니다
마이클 Grinich

25

실제로 트릭을 수행 :)

- (CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section
{
    if(section == 0)
        return kFirstSectionHeaderHeight;
    return [self sectionHeaderHeight];
}

2
나는 당신이 return [self.tableView sectionHeaderHeight];또는 더 나은 것을 의미한다고 생각합니다 return [tableView sectionHeaderHeight];. 그러나 펜촉이나 스토리 보드를 사용하지 않기 때문에 둘 다 -1을 반환합니다.
jk7

7

완성도를 높이기 위해 : iOS7 +에서는 그룹화 된 스타일 섹션 헤더의 높이 55.5가 첫 번째 및 38다음 헤더에 대한 높이입니다 . (DCIntrospect로 측정)


4

신속한 4.2의 경우 UITableView.automaticDimension을 반환해야합니다.


2

여기에 정답이 무엇인지 확실하지 않지만 iOS 5에서 그룹화 된 테이블보기의 경우 10 또는 22가 올바른 높이로 나타나지 않습니다. 질문에 따라 44를 사용 하고 있으며 대략적으로 나타납니다. 정확한 높이.


2

기본 높이를 얻으려면 super처리하십시오.

- (CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section
{
    if (section == 0)
        return kFirstHeaderHeight;

    return [super tableView:tableView heightForHeaderInSection:section];
}

[super tableView:tableView heightForHeaderInSection:section];펜촉 또는 스토리 보드를 사용하지 않기 때문에 0을 반환합니다.
jk7

1
UITableViewController를 서브 클래 싱하는 경우에만 작동합니다.
Wallace

-1

이 트릭을해야합니다

- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
{
    if(indexPath.section == CUSTOM_SECTION)
    {
        return CUSTOM_VALUE;
    }
    return [tableView rowHeight];
}

당신이 생각하는 것return [self sectionHeaderHeight];
TMB

@TMB [self sectionHeaderHeight];에서 오류가 발생합니다. 당신은 의미 했습니까 [tableView sectionHeaderHeight];?
jk7
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.