iOS에서 여러 줄 테이블 셀을 만드는 방법은 무엇입니까?


1 Answers

address가 detailTextLabel 인 곳에서 필요한만큼의 줄을 지원하는 UILabel을 사용하십시오. 주소는 3이면 충분합니다. Paul Bently's 대답과 함께 당신은 잘 가야합니다.

Question

텍스트 크기를 조정하는 대신 텍스트에 맞게 두 번째 셀을 확장하려면 어떻게해야합니까? iOS에서이 작업을 수행 할 수있는 방법이 있습니까? 아니면 가정에서 조리 한 솔루션을 생각해 내야합니까? iOS 주소록 응용 프로그램을 보면 Address와 같은 상자가 있습니다. 나는 이것을 구현하는 방법을 찾을 수 없습니다.

앞으로이 목표를 달성하고자하는 사람은 내 솔루션 코드를 참조하십시오.

헤더 파일 :

#define FONT_SIZE 22.0f
#define CELL_CONTENT_WIDTH 320.0f
#define CELL_CONTENT_MARGIN 5.0f

구현 파일 :

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

    if (indexPath.section == 0 && indexPath.row == 1) {

        NSString *text = [atmAnnotation address];

        CGSize constraint = CGSizeMake(CELL_CONTENT_WIDTH - (CELL_CONTENT_MARGIN * 2), 20000.0f);

        CGSize size = [text sizeWithFont:[UIFont systemFontOfSize:FONT_SIZE] constrainedToSize:constraint lineBreakMode:UILineBreakModeWordWrap];
        NSLog(@"Size for address is Height:%f Width:%f",size.height,size.width);

        CGFloat height = MAX(size.height, 44.0f);

        return height + (CELL_CONTENT_MARGIN * 2);  

    }
    return 44.0f;
}

다음은 결과 스크린 샷입니다.




방금이 같은 문제가 발생했습니다. 꽤 많은 하드 코딩을 필요로하지 않는 대체 솔루션을 발견했으며 높이 계산에 반영 될 인터페이스 작성기의 레이블을 수정할 수 있습니다.

- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
{
     if (indexPath.section == 0 && indexPath.row == 1) {
        NSString *text = [atmAnnotation address];
        UITableViewCell* cell = [tableView dequeueReusableCellWithIdentifier:@"MyIdentifier"];

        cell.textLabel.text = text;
        [cell.textLabel sizeToFit];

        CGFloat height = MAX( 44, cell.textLabel.bounds.size.height );

        return height + CELL_CONTENT_MARGIN * 2;
    }

    return 44.0f;
}

유일한 단점은 일부 임시 UITableViewCell 할당이 추가로 발생하지만 테이블 뷰는 즉시이를 다시 확보하므로 큰 문제는 아니라고 생각합니다.



Related