2011-07-17 4 views
1

클라이언트 용 iOS 앱을 작성 중이며 기본보기는 표보기이며 대부분의 iOS twitter 클라이언트와 마찬가지로 텍스트로 셀을 채 웁니다.iOS 사용자 정의 테이블보기 셀 레이블 크기 조정 손상

레이블이 3 개인 사용자 정의 셀보기를 만들었으며이 레이블에 텍스트를 채 웁니다. 라벨 중 하나는 텍스트의 크기에 따라 자동으로 크기를 조정해야합니다 (최대 140 자).

텍스트가 하나의 전체 행 (레이블이 확장 된 것처럼)으로 확장되거나 레이블의 일부만 차지하여 다른 레이블로 넘칠 때까지 위/아래로 스크롤 할 때까지 제대로 작동합니다

before scrolling http://lloydsparkes.co.uk/files/iOS-BeforeScrolling.png

그리고 스크롤을 조금 후 : 테이블 및 데이터가 처음로드 될 때

그래서 화면의 모습 (나는 다른 유사한 SO 질문에 따라 사용 가능 "클립 파단"해야합니까) 모양은 다음과 같습니다.

after scrolling http://lloydsparkes.co.uk/files/iOS-AfterScrolling.png

그래서 레이블이 다시 스크롤되는 동안 (같은 셀이 재사용 됨으로 인해) 크기가 조정되고 올바른 크기로 다시 크기가 조정되지 않는 것으로 보입니다. 셀을 충전에 대한 나의 코드

은 다음과 같습니다

-(UITableViewCell*)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{ 

static NSString *myID = @"customCell"; 
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:myID]; 

if(cell == NULL) { 

    [[NSBundle mainBundle] loadNibNamed:@"CustomCellView" owner:self options:nil]; 

    cell = customCell; 
    self.customCell = nil; 
} 

Post *p = [posts objectAtIndex:indexPath.row]; 

UILabel *label = (UILabel*)[cell viewWithTag:15]; 
label.text = p.Name; 

label = (UILabel*)[cell viewWithTag:10]; 
label.text = p.Text; 
[label sizeToFit]; 

label = (UILabel*)[cell viewWithTag:20]; 
label.text = [p Source]; 

//[cell layoutSubviews]; 

return cell; 
} 

그래서 내가 무엇을이 문제를 일으키는 물어 보는 거지? 어떻게 해결 될 수 있습니까?

+0

정말 작동합니까 sizeToFit를 호출하기 전에 원래 크기 (nib 파일에 설정된 valeu)로 다시 label 객체의 프레임을 설정하는 것입니다 시도 할 수

것은? 'customCell'은 아무것도 할당되지 않은 것 같습니다. –

+0

customCell은 실제 뷰에 (IB를 통해) 첨부 된 컨트롤러의 속성이므로 Nib가로드 될 때 해당 속성에 연결됩니다. 잘하면 나는 그것을 정확하게 설명했다 .... – lloydsparkes

답변

7

이 호출 될 때마다 UILabel 프레임이 변경되므로 sizeToFit 메서드가 이상하게 작동 할 수 있습니다. 당신이 바로

[label setFrame:CGRectMake(0.0f, 0.0f, 100.0f, 50.0f)];  
[label sizeToFit]; 
+0

작품, 화려한, 많은 감사 :) – lloydsparkes

+0

예기치 않은 일이 경이. –

관련 문제