문제

다양한 행 높이가있는 UitableView를 만들고 싶습니다. UitableViewCells 내부에 Uilabel을 만들어이를 달성하려고합니다.

지금까지 내 코드는 다음과 같습니다.

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
    static NSString *MyIdentifier = @"EntryCell";
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:MyIdentifier];
    if (cell == nil) {
        cell = [[[UITableViewCell alloc] initWithFrame:CGRectZero reuseIdentifier:MyIdentifier] autorelease];
    }

    UILabel *textView = [[UILabel alloc] initWithFrame:CGRectMake(10, 0, 300, 40)];
    textView.numberOfLines = 0;
    textView.text = [entries objectAtIndex:[indexPath row]];
    [cell.contentView addSubview:textView];
    [textView release];

    return cell;
}

이것은 셀당 두 줄의 텍스트를 제공합니다. 그러나 각 "항목"마다 다른 수의 줄이 있으며, 우체 뷰 셀이 글꼴 크기를 변경하지 않고 필요에 따라 텍스트를 자동으로 조정하기를 원합니다.

[textView sizeToFit] 및/또는 [cell sizeToFit] 작동하지 않는 것 같습니다.

다음은 uitable 뷰를보고 싶은 방법입니다.

----------------
Lorem ipsum
----------------
Lorem ipsum
Lorem ipsum
----------------
Lorem ipsum
Lorem ipsum
Lorem ipsum
----------------
Lorem ipsum
----------------
Lorem ipsum
Lorem ipsum
----------------

누구 든지이 작업을 제대로 수행하는 방법을 아는 사람이 있습니까?

감사.

도움이 되었습니까?

해결책

UitableViewDelegate는 선택적인 메소드 HeightforseFortIndexPath를 정의하여 시작할 수 있습니다. 그런 다음 SizewithFont를 사용해야합니다.

정확한 문제에 대한 논의가 있습니다.

http://www.v2ex.com/2008/09/18/how-to-make-uitableviewcell-have-variable-height/

텍스트 크기도 논의되었습니다 이 스레드

다른 팁

이 코드는 저를 위해 작동합니다. 그것이 완벽한 지 모르지만 작동합니다.

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

    if(indexPath.row<[notesModel numberOfNotes]){
        NSString *cellText = [@"Your text..."];
        UIFont *cellFont = [UIFont fontWithName:@"Helvetica" size:12.0];
        CGSize constraintSize = CGSizeMake([UIScreen mainScreen].bounds.size.width - 100, MAXFLOAT);
        CGSize labelSize = [cellText sizeWithFont:cellFont constrainedToSize:constraintSize lineBreakMode:UILineBreakModeWordWrap];

        return labelSize.height + 20;
    }
    else {
        return 20;
    }
}

TextView.numberOfLines = 2? 숫자 노선은 최대 선의 최대 nuber를 설정하므로 2가 당신을 위해 빚지고 있습니까?

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top