2011-08-18 5 views
1

동적으로 셀의 행 높이를 UILabel 높이 (셀의 하위보기)로 설정하고 싶습니다.iPhone : UILabel의 콘텐츠 높이로 행 높이를 변경하는 방법

어려움은 UILabel의이 문자열의 내용

두 문제를 확인하여 그 높이를 얻을 필요가있다 :

1 어떻게 제대로 문자열 아이폰에에 따라 UILabel의에서 numberofLines을 설정할 수 있습니까?

2 cellForRow 메서드보다 먼저 delegate 메서드 인 heightForRowAtIndexPath가 호출되었으므로이 UIlabel 높이를 row.height에 어떻게 반영 할 수 있습니까? 여기

내가 잘못 somethinsg 할 확신 whcih 일부 코드 ..입니다

Nsstring st= "very long text..."; 
CGSize theSize = [st sizeWithFont:font constrainedToSize:CGSizeMake(250.0f, MAXFLOAT) lineBreakMode:UILineBreakModeWordWrap]; 
CGRect cg = CGRectMake(0.0f, 0.0f, 250.0f, theSize.height); 
UILabel *label=[[UILabel alloc] initWithFrame:cg]; 
label.textAlignment=UITextAlignmentLeft; 
label.text=st; 
[label setNumberOfLines:10];// this is trouble!! how to set this!? 
[cell addSubview:label]; 
+0

'UILabel'의 [numberOfLines] (http://developer.apple.com/library/iOS/documentation/UIKit/Reference/UILabel_Class/Reference/UILabel.html#//apple_ref/occ/instp/UILabel/ numberOfLines)는 최대 * 줄 수입니다. "최대 한도를 제거하고 필요한만큼 줄을 사용하려면이 속성 값을 0으로 설정하십시오." – albertamg

+0

@albertamg 놀라워요! 0으로 설정하면 대부분의 문제가 해결되었습니다! 어떻게 행을 설정할 수 있습니다. 높이까지. 크기. 높이? txx – Spring

+0

당신은'heightForRowAtIndexPath :'를 구현하고 행에 적절한 높이를 리턴해야합니다. 'theSize'의 계산을 도우미 메서드로 옮기고'cellForRowAtIndexPath :'에서 사용할 수 있습니다. – albertamg

답변

1

(내 의견의 매시업)

1- 어떻게 제대로 문자열 아이폰에에 따라 UILabel의에서 numberofLines을 설정할 수의 + 높이 반환?

UILabelnumberOfLines는 라인 최대 수이다. "최대 한도를 제거하고 필요한만큼 줄을 사용하려면이 속성 값을 0으로 설정하십시오."

2 cellForRow 메서드보다 먼저 delegate 메서드 인 heightForRowAtIndexPath가 호출되었으므로이 UIlabel 높이를 row.height에 어떻게 반영 할 수 있습니까?

heightForRowAtIndexPath:을 구현하고 행의 적절한 높이를 반환해야합니다. theSize의 계산을 도우미 메서드로 옮기고 cellForRowAtIndexPath:에서도 사용할 수 있습니다.

1

당신은 모두 사용이 계산 또한 라벨의 텍스트를 설정하고, 할 수있는 별도의 textForRow: 기능을 가질 수있다 (이미 수행 한 많은 같은) 대리자 메서드의 라벨 (셀)의 크기

3
- (CGFloat) tableView: (UITableView *) tableView heightForRowAtIndexPath: (NSIndexPath *) indexPath { 

CGSize labelSize = CGSizeMake(200.0, 20.0); 
if ([string length] > 0) 
labelSize = [string sizeWithFont: [UIFont boldSystemFontOfSize: 17.0] constrainedToSize: CGSizeMake(labelSize.width, 1000) lineBreakMode: UILineBreakModeWordWrap]; 
return 24.0 + labelSize.height; 
} 

당신은 heightForRowAtIndexPath를 구현해야합니다. 내 샘플 코드에서, 나는 24 레이블

관련 문제