2011-01-01 9 views
2

iOS에서 메신저 앱을 구현 중입니다. 320 라이브러리에는 이미지 및 URL 링크 표시와 같은 멋진 기능을 제공하는 TTStyledTextLabel이 있다는 것을 알았습니다. 그러나 TTStyledTextLabel을 메시지 풍선에 포함 시키려합니다 (iphone과 함께 제공되는 SMS 앱처럼). 텍스트 길이에 따라 크기를 조정해야하는 라벨이 필요합니다. TTStyledTextLabel은 너비에 따라 높이를 조정할 수 있지만 텍스트가 매우 짧아서 전체 줄을 채울 수없는 경우 가로로 축소하는 방법을 알지 못합니다. 어떤 제안?TTStyledTextLabel의 너비를 조정하는 방법은 무엇입니까?

+0

, 난 당신이 실제 메신저 기능을 사용중인 요청할 수 있습니다? libpurple? – Pripyat

답변

3

나는 약간 더 나은 솔루션을 생각 : 나는 ttstyledtext의의 RootFrame을 얻고 그 형제는 최대 폭을 찾기 위해 프레임을 반복.

그것은 다음과 같이 작동 관심 부족

TTStyledTextLabel* label = [[TTStyledTextLabel alloc] init]; 
    label.text = [TTStyledText textFromXHTML:myTextToBeDisplayed]; 
    [label sizeToFit]; 
    CGFloat maxWidth = 0; 
    TTStyledFrame *f = label.text.rootFrame; 
    while (f) { 
     int w = f.x + f.width; 
     if (w > maxWidth) { 
      maxWidth = w; 
     } 
     f = f.nextFrame; 
    } 
    return CGSizeMake(maxWidth, label.height); 
+0

[label sizeToFit]의 동작은 무엇입니까? 이 시나리오에서? 화면 너비에 걸쳐 모든 것을 배치합니까? – user210504

0

sizeToFit에 width 매개 변수를 점진적으로 전달하고 그 결과 높이를보고 크기가 괜찮은지의 단서를 제공하려고 시도했습니다. 그러나 이것은위한 우아한 용액

아니다 (와 인덱스 < 320; INT 인덱스 = 100 지수 인덱스 = + 30)

{ label.width = X; if (label.height < 20) 중단;

}

+0

방금이 솔루션을 다시 확인했습니다. – user210504

+0

약간 더 나은 해결책이 있다고 생각합니다. ttstyledtext의 rootFrame을 가져 와서 형제 프레임을 반복하여 최대 너비를 찾습니다. –

관련 문제