2012-05-09 1 views
0

방금 ​​이상한 문제에 부딪 혔습니다. 동적 높이가있는 사용자 정의 tableview 셀이 있습니다. 이 모든 것을 테스트하는 동안 문제가없는 것처럼 보였지만 이제는 실제 내용을로드하는 중 일부 문제가있는 것 같습니다.sizeToFit은 긴 단어가있는 새로운 라인을 트리거하지 않습니다.

몇 가지 텍스트가 UILabel의에서 새로운 라인을 유발하지 않는 것 같습니다

올바른 : http://dl.dropbox.com/u/274185/Screen%20Shot%202012-05-09%20at%201.15.21%20PM.png 잘못된 : 잘못된 예에서 볼 수 있듯이 http://dl.dropbox.com/u/274185/Screen%20Shot%202012-05-09%20at%201.15.30%20PM.png

, 텍스트가 두 번째로 밀려 줄의 높이는 여전히 한 줄로 계산됩니다.

item.project = @ "긴 제목의 다른 테스트 프로젝트 (관리/프로젝트 관리)";

item.project = @ "프로젝트 테스트 (관리자/프로젝트 관리)"; 을 것으로 나타나 많은 EDIT

// when creating the cell 
cell.projectLabel.lineBreakMode = UILineBreakModeWordWrap; 
cell.projectLabel.numberOfLines = 0; 
[cell.projectLabel sizeToFit]; 

// in heightForRowAtIndexPath() 
CGSize projectHeight = [item.project sizeWithFont:[UIFont boldSystemFontOfSize:13.0f] constrainedToSize:CGSizeMake(320.0f, CGFLOAT_MAX) lineBreakMode: UILineBreakModeWordWrap]; 

내가 lineBreakMode을 변경했지만,이 도움하지 않는 것 :

내가 높이를 계산하는 방법은 다음과 같이이다 문제는 텍스트의 높이를 계산할 때, 나는 정확하게 계산 된 실제 너비를 사용 후 올바른되지 않은 고정 320 포인트를 사용했습니다.

CGSize projectHeight = [item.project sizeWithFont:[UIFont boldSystemFontOfSize:13.0f] constrainedToSize:CGSizeMake(cell.projectLabel.bounds.size.width, CGFLOAT_MAX) lineBreakMode: UILineBreakModeWordWrap]; 

답변

1

난 단지 아래로보기 크기 sizeToFit 믿을 . 레이블의 프레임을 두 줄만큼 충분히 높게 설정 한 다음 sizeToFit을 호출해야합니다. 텍스트가 한 줄일 때 레이블이 축소되지만 텍스트가 두 줄이면 높이가 유지됩니다.

+0

인터페이스 빌더에서 내 라벨의 프레임은 여러 줄에 딱 맞게 높이가 있습니다. 하지만 스크린 샷에서 볼 수 있듯이 일부 경우에만 발생합니다. lineBreakMode와 관련된 점이 있다고 생각하게합니다. –

+0

'UILineBreakModeCharacterWrap' 테스트를 통해 사실임을 확인하십시오. –

+0

동일한 높이로 출력하면 동일한 문제가 발생합니다. 첫 번째와 다른 하나는 16px 만 제공합니다. 이상한 ... –