2012-07-20 4 views
0

저는 iOS 프로그래밍을 처음 사용하고 있으며 테이블보기가있는 앱을 개발 중입니다.iOS - 셀 높이 및 레이블 높이 자동 조절

테이블 데이터가 plist 파일에 의해로드되고 있습니다. 테이블의 한 행은 길고 일관성이 없으므로 동적 인 높이가 필요합니다. 나는 높이가 확인되는 시점에이를 얻기 위해 관리해야

- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath { 

    NSString *cellText = @"This is a very long peice of text to show up here and here";// this will eventually be data from a plist 
    UIFont *cellFont  = [UIFont fontWithName:@"Helvetica-neuve" size:21.0]; 
    CGSize constraintSize = CGSizeMake(280.0f, MAXFLOAT); 
    CGSize labelSize  = [cellText sizeWithFont:cellFont constrainedToSize:constraintSize lineBreakMode:UILineBreakModeWordWrap]; 
    int buffer = 70; 
    return labelSize.height + buffer+100; 


    //return 65; 

} 


- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { 
    static NSString *CellIdentifier = @"CustomTableCell"; 
    static NSString *CellNib = @"DetailViewCell"; 



    DetailViewCell *cell = (DetailViewCell *)[tableView dequeueReusableCellWithIdentifier:CellIdentifier]; 

    if (cell == nil) { 
     NSArray *nib = [[NSBundle mainBundle] loadNibNamed:CellNib owner:self options:nil]; 
     cell = (DetailViewCell *)[nib objectAtIndex:0]; 


     cell.cellSubtitleLabel.lineBreakMode = UILineBreakModeWordWrap; 
     cell.cellSubtitleLabel.numberOfLines = 0; 
     cell.cellSubtitleLabel.font = [UIFont fontWithName:@"Helvetica-neuve" size:21.0]; 




    } 

    cell.accessoryType = UITableViewCellAccessoryNone; 


    informations = [[NSArray alloc] initWithObjects:@"Title", @"Country", @"State", @"Population", @"Info", nil]; 
    subtitles = [[NSArray alloc] initWithObjects:titleString, subtitleString, stateString, populationString, @"This is a very long peice of text to show up here and here", nil]; 


    cell.cellTitleLabel.text = [informations objectAtIndex:indexPath.row]; 
    cell.cellSubtitleLabel.text = [subtitles objectAtIndex:indexPath.row]; 

    return (DetailViewCell *) cell; 
} 

:

이것은 내가 지금까지있는 것입니다. 그러나 레이블 텍스트가 표시되지 않습니다. 나는 이것을 레이블의 높이로 좁혔다. 23시 (Interface Builder에서 설정)입니다. 크기를 늘리면 다른 셀이 엉망이됩니다. 나는 그것의 내용을 기반으로 레이블의 높이를 변경해야합니다.

누군가 2 일 동안 시행 착오를 보았으나 나에게 도움을 주시겠습니까? 여전히 그 일을 처리하지 못했습니다. 또한 나는 이것 좀 멍청한 놈, 그래서 자세히 설명)

많은 감사

라이언.

답변

0

나는 현재 같은 일을하고있다. 이것이 제가하는 것입니다.

sizeToFit 방법을 사용하여 cellForRowAtIndexPath 콜백의 UILabel의 크기를 조정 :

[contentViewCell.myTextLabel sizeToFit]; 

희망이 당신을 도울 것입니다.