2011-03-03 4 views
5

멀티 라인 UILabel에 약간의 문제가 있습니다. 중간에서 이상하게 시작하는 UILabel 텍스트는 마지막 줄이 중간이되도록 도착합니다. 항상. 정상적인 텍스트 뷰와 같이 동작해야합니다. 맨 위부터 시작하여 서로 아래에있는 선이 맨 위에 머물러 있기를 원합니다. 미안해 설명해 주면 필요하다면 자세히 설명하려고합니다! 미리 감사드립니다!멀티 라인 UILabel이 중간에서 위로부터 텍스트를 시작하도록 만들기

답변

11

NSString에서 sizeWithFont:constrainedToSize:lineBreakMode: 메서드를 사용하여 글꼴 및 제한된 너비가 주어진 텍스트 블록의 높이를 파악할 수 있습니다. 그런 다음 레이블의 프레임을 텍스트를 포함 할만큼 충분히 크게 업데이트하십시오. sizeWithFont 방법은 아이폰 OS 7.0 +에 decprecated 때문에

CGSize textSize = [label.text sizeWithFont:label.font constrainedToSize:CGSizeMake(label.frame.size.width, MAXFLOAT) lineBreakMode:label.lineBreakMode]; 
label.frame = CGRectMake(20.0f, 20.0f, textSize.width, textSize.height); 
+0

당신은 내 감사를! –

+1

또한 'label.numberOfLines = 0'을 설정해야 할 수도 있습니다 –

0

, 당신은 boundingRectWithSize라는 이름의 다른 방법을 사용할 수 있습니다. 예를 들어

:

NSDictionary *attrsDictionary =[NSDictionary dictionaryWithObject:YourFont forKey:NSFontAttributeName]; 
NSAttributedString *attrString =[[NSAttributedString alloc] initWithString:yourString attributes:attrsDictionary]; 

textRect = [attrString boundingRectWithSize:yourSize options:NSStringDrawingUsesLineFragmentOrigin context:nil]; 
관련 문제