2013-04-27 3 views
2

내 앱 (iPad)에는 여러 열이 포함 된 UITableView를 만들어야합니다. 이렇게하려면 필요한 열을 제공하기 위해 사용자 지정 UITableViewCell을 만들어야했습니다.UITableView : viewForHeaderInSection - 헤더 텍스트?

이제 이제는이 열에 헤더를 배치 할 차례입니다. 'viewForHeaderInSection'대리자에서 테이블의 너비를 분산시키는 레이블을 배치하려고합니다.

모두 잘되었고, 배경색이 설정되었고보기의 너비에 잘 도달합니다.

하지만 사용 갈 때 :

label.text = [NSString stringWithFormat:@" Date  Dist  Litres  Cost($)"]; 

나는 위의 예를 나타 내기 위해 밖으로 확산 텍스트를하지 않습니다. 내가 얻는 것은 다음과 같습니다.

" Date Dist Litres Cost($)" 

헤더 텍스트에 필요한 공간을 어떻게 복구합니까?

+0

다른 답변에 의해 제안

이것은 당신의 문자열에 공백이 있지만 더 좋은 방법을 추가 한 것은, 다른 컬럼에 대해 다른 헤더를 사용하고 자신의 헤더 타이틀을 설정하는 것입니다 머리글보기를 사용하면 레이블의 위치를보다 정확하게 제어 할 수 있습니다. – Lefteris

+0

당신의 질문은 다소 모호합니다, 그래서 당신이 UICollectionView를 사용해야한다는 다소 모호한 느낌을 갖습니다. – QED

답변

5

4 개의 UILabel 하위보기가있는 헤더보기를 만들어야합니다. 이 같은

뭔가 :

- (UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section { 
    UIView *headerView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 320, 30)]; 
    // 4 * 69 (width of label) + 3 * 8 (distance between labels) = 300 
    UILabel *label1 = [[UILabel alloc] initWithFrame:CGRectMake(10, 4, 69, 22)]; 
    label1.text = @"Date"; 
    [headerView addSubview:label1]; 
    UILabel *label2 = [[UILabel alloc] initWithFrame:CGRectMake(87, 4, 69, 22)]; 
    label2.text = @"Dist"; 
    [headerView addSubview:label2]; 
    UILabel *label3 = [[UILabel alloc] initWithFrame:CGRectMake(164, 4, 69, 22)]; 
    label3.text = @"Litres"; 
    [headerView addSubview:label3]; 
    UILabel *label4 = [[UILabel alloc] initWithFrame:CGRectMake(241, 4, 69, 22)]; 
    label4.text = @"Cost($)"; 
    [headerView addSubview:label4]; 
    return headerView; 
} 

은 사용자의 요구 사항에 색상, 글꼴 및 프레임을 조정합니다.

이것은 공백 문자의 너비보다 훨씬 더 깔끔합니다.
고정 너비 글꼴을 사용하면 길을 사용할 수 있지만 반대 의견을 제시합니다.

앱을 다른 언어로 현지화하려는 경우 공백을 계산하는 작업이 악몽이됩니다.

1

당신이 UIView에 추가 라벨에 의해 그것을 할 경우 그것은 좋은 것이 적절한 위치에의에, 그리고 NSTextAlignmentCenter 다음 설정 라벨 타이틀 따라 모든 레이블의 정렬을 (의이 headerView를 부르 자). 그런 다음 headerView을 반환하십시오.

- (UIView *) tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section 
2

글쎄, 당신이 무엇을하려고하는지, 목적이 무엇인지, 그것이 특이하게 보는지 확실하지 않습니다. 그러나 objective-c에서 문자열 안에 공백을 넣기 위해 단순히 "\ t"를 추가하면 Tab과 같은 공백이 추가됩니다.

label.text = [NSString stringWithFormat : @ "Date \ t Dist \ t Liters \ t Cost ($)"]; 왜 4 UILabels를 만들고에 배치하지 않는

+0

감사합니다 ..... 이것은 정말 도움이됩니다. 매우 감사. – Fritzables

+0

미안 Jessica, 당신의 방법을 시도했지만 슬프게도 내 시나리오에서 작동하지 않았다. Matthias가 제안한대로 각 열에 레이블을 삽입하여 관리했습니다. – Fritzables

+0

@Fritzables 기쁜 소식을 듣고 문제가 해결되었습니다. – Jessica

관련 문제