IT Share you

UITableViewCell 높이의 크기를 동적으로 조정하는 방법

shareyou 2020. 12. 13. 11:28
반응형

UITableViewCell 높이의 크기를 동적으로 조정하는 방법


모든 셀 내부에 편집 가능한 UITextView가있는 클래식 그룹화 된 UITableView가 있습니다. 이 텍스트 뷰는 한 줄 또는 여러 줄로 표시 될 수 있으며 사용자가 글을 쓰고 텍스트가 새 줄을 시작할 때 셀의 높이가 증가하기를 원합니다.

내 질문은 셀의 높이를 높이기 위해 전체 테이블을 다시로드해야합니까? 다른 방법은 없나요?

나는 많은 것을 찾고 있었고 이전 답변과 튜토리얼은 텍스트 높이를 계산하는 방법, heightForRowAtIndexPath를 구현하는 방법 ... 내가 이미 알고있는 것들에 대해 이야기했습니다. 내 관심사는 내가 원하는 것을 달성하기 위해 사용자가 새 캐릭터를 입력 할 때마다 높이를 계산하고 테이블을 다시로드해야한다는 것입니다.

감사.


항상 전체 테이블을 다시로드 할 필요는 없습니다. 대신 해당 행을 다시로드 할 수 있습니다.

[tableView reloadRowsAtIndexPaths:[NSArray arrayWithObject:[NSIndexPath indexPathForRow:0 inSection:0]] withRowAnimation:UITableViewRowAnimationFade];

[tableView beginUpdates];
[tableView endUpdates];

더 구체적으로 말하자면, tableView:heightForRowAtIndexPath:새로운 높이를 계산 하기 위해 구현 한 다음 rickharrison이 말한대로 수행하고을 호출해야 [tableView reloadRowsAtIndexPaths:withRowAnimation]합니다. 세포가 확장 된 높이와 정상 높이를 가질 수 있고 탭했을 때 성장하기를 원한다고 가정 해 보겠습니다. 넌 할 수있어:

-(CGFloat)tableView:(UITableView*)tableView heightForRowAtIndexPath:(NSIndexPath*) indexPath 
{
    if ([expandedPaths containsObject:indexPath]) {
        return 80;
    } else {
        return 44;
    }
 }

-(void)tableView:(UITableView*) didSelectRowAtIndexPath:(NSIndexPath*) indexPath
{
    [expandedPaths addObject:indexPath];
    [tableView reloadRowsAtIndexPaths:[NSArray arrayWithObject:indexPath] withRowAnimation:UITableViewRowAnimationFade];
}

-reloadRowsAtIndexPaths:withRowAnimation셀의 프레임을 변경 한 후에도 UITableViewCell 높이의 크기를 조정하지 않았습니다. 다음과 같이 따랐을 때만 작동했습니다 -reloadData.

[tableView reloadRowsAtIndexPaths:[NSArray arrayWithObject:[NSIndexPath indexPathForRow:0 inSection:0]] withRowAnimation:UITableViewRowAnimationFade];
[tableView reloadData];

참고 URL : https://stackoverflow.com/questions/3069339/how-to-dynamically-resize-uitableviewcell-height

반응형