2011-10-12 2 views
0

사용자 정의 UITableCell 하위 클래스에 이상한 문제가 있습니다.이 사용자 정의 셀에는 여러 줄의 UILable 쌍이 있으며 다양한 텍스트 (최대 2000 자)를 포함 할 수 있습니다. 사용자 정의 테이블 셀 계정에 장치 방향을 가지고, 나는 아래의 코드를 사용하여 프레임의 높이를 계산하고 레이아웃 방법이 있습니다사용자 정의 tableCell의 UILabel 텍스트 오버런

self.presentationTextLabel.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleRightMargin; 

I을 :

if (isPortrait) { 
    presentationTextLabelSize = [presentationTextStr sizeWithFont:[UIFont systemFontOfSize:12.0f] constrainedToSize:CGSizeMake(portraitDescriptionWidth, 2000.0f) lineBreakMode:UILineBreakModeWordWrap]; 
    presentationTextLabelRect = CGRectMake(60.0f, 25.0f, portraitDescriptionWidth, presentationTextLabelSize.height); 
} else { 
    presentationTextLabelSize = [presentationTextStr sizeWithFont:[UIFont systemFontOfSize:12.0f] constrainedToSize:CGSizeMake(landscapeDescriptionWidth, 2000.0f) lineBreakMode:UILineBreakModeWordWrap]; 
    presentationTextLabelRect = CGRectMake(60.0f, 25.0f, landscapeDescriptionWidth, presentationTextLabelSize.height); 
} 

self.presentationTextLabel.frame = presentationTextLabelRect; 

나는 다음과 같은 레이블의 autoResizeMask 설정 한 UITableViewController에서 같은 계산을 사용하여 행 높이를 설정하십시오.

모든 것이 완벽하게 작동하며 라벨의 너비가 올바른 높이로 크기가 정해지고 기기 회전시 셀이 자동으로 자릅니다. 단, 기기가 가로로 회전하면 라벨의 텍스트가 오른쪽의 라벨의 프레임 밖으로 가끔 확대됩니다 , tableView 가장자리를 지 웁니다. 내가보기에서 셀을 스크롤하면 다시 정상으로 돌아옵니다. 콘솔에 셀의 너비를 로깅하고 있지만 텍스트가 너비보다 훨씬 길어집니다.

어떤 아이디어가 도움이 되었습니까? 장치가 가로로 회전 할 때

감사

+0

아마도 이것은 테이블에있는'UITableViewCell' 인스턴스의 캐싱과 관련이 있습니다. 더 나은 해결책이있을 수 있습니다. 그러나 당신은'UITableView' 장치 회전에'reloadData' 메시지를 보낼 수 있습니까? – FluffulousChimp

답변

0

문제가되면, tableView는 다시로드되지 않습니다. 따라서 텍스트를 업데이트하는 데는 불일치가 있습니다. 장치가 가로 모드로 변경된 곳에서 [tableView reloadData];을 사용하십시오.

+0

이 답변은 테이블 데이터를 다시로드하는 것보다 복잡했지만 정확한 정보를 제공합니다. 난 모든 보이는 셀에 대한 사용자 지정 tableViewCell에서 사용자 지정 레이아웃을 수행해야하고 또한 사용자 지정 셀 textField 너비를 설정하는 방식을 변경했습니다. 결국 textField 너비를 정확하게 설정하기 위해 contentView의 범위를 사용하게되었습니다. – Alpinista

관련 문제