2013-04-06 1 views
0

나는 다른 텍스트를 표시하는 테이블을 가지고 있으므로 적절하게 셀 높이를 조정해야합니다. 위임 방법을 사용합니다.uitableviewcell에 대한 정확한 텍스트 높이 찾기

- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath; 
{ 
// I ask for my content string and then I want to adjust the cell accordingly: 
CGSize maximumSize = CGSizeMake(defaultCell.textLabel.frame.size.width, CGFLOAT_MAX); 
GSize neededSize = [contentString sizeWithFont:defaultCell.textLabel.font constrainedToSize:maximumSize lineBreakMode:defaultCell.textLabel.lineBreakMode]; 
CGFloat cellHeight = neededSize.height +15; 
return cellHeight; 

기본 셀은 스토리 보드의 프로토 타입 셀입니다. viewDidAppear 대리자 메서드에서 초기화하여 프로토 타입 uitableviewcell에 쉽게 액세스 할 수 있습니다.이 방법으로 내 스토리 보드에서 글꼴과 같은 것을 변경해야합니다.

문제점 sizeWithFont : constrainedToSize : lineBreakMode 함수가 정확한 답을주지 못한다는 것이 문제입니다. 다음 줄에 아주 짧은 단어가 몇 개있는 경우 한 줄의 결과가 너무 낮을 것입니다.

anybode는 그 이유와이를 피하는 방법에 대한 아이디어가 있습니까?

답변

0

보기를로드 할 때와 렌더링 할 때 셀 너비에 차이가있을 수 있습니다. 내 어둠 속에서 당신이 작업하고 있다고 생각하는 셀 프레임은 렌더링되는 셀 프레임이 아닙니다.

+0

그럼 어떻게 처리할까요? 셀 높이에 대한 델리게이트 메서드가 호출 될 때 다른 셀이 아직 초기화되지 않았기 때문에 기본 셀을 사용하도록 전환했습니다. – DarkCell

+0

'tableView : willDisplayCell : forRowAtIndexPath'를 오버라이드하고 cell.textLabel 프레임을 인쇄하면 iPhone 화면 (기본 셀)에서 프레임이'(10 0; 300 44)'이고, iPad 화면에서는 왼쪽과 오른쪽 여백은 각각 10 픽셀로 유지됩니다. 그래서'defaultCell.textLabel.frame.size.width'에서 -20px를 하드 코딩 하겠지만 20px가 실제로 무엇을 나타내고 무엇이 제거되는지를 나타내는 주석을 남겨 두십시오. – user352891