2

iOSにIMアプリを実装しています。three20ライブラリには、画像やURLリンクの表示などの優れた機能を提供するTTStyledTextLabelがあることがわかりました。ただし、TTStyledTextLabelをメッセージバブルに埋め込みたいのですが(iphoneに付属のSMSアプリと同じように)、テキストの長さに応じてラベルのサイズを調整する必要があります。TTStyledTextLabelは幅に応じて高さを調整できることがわかりましたが、テキストが非常に短く、行全体を埋めることができない場合に、水平方向に縮小する方法がわかりません。助言がありますか?

4

2 に答える 2

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);
于 2011-01-06T12:55:31.797 に答える
0

サイズの width パラメータを sizeToFit に段階的に渡し、結果の高さを見て、サイズが問題ないかどうかの手がかりを与えることで、それを試してみました。しかし、これはエレガントなソリューションではありません

for (int index = 100; index < 320; index= index+30)

{ label.width = x; if (label.height < 20) ブレーク;

}

于 2011-01-06T01:16:55.180 に答える