2011-07-08 8 views
4

フォーマットされた領域のテキストを表示するために、demoLblという名前のOHAttributedLabelを使用します。このラベルはInterface Builderでレイアウトされ、ViewController内のプロパティに接続されています。 attributedTextをラベルに設定すると、すべてのテキストがラベルに表示されます。
ラベルのサイズを変更しないと、ラベルの最後にテキストが切り取られ、残りのテキストが欠落します。コンテンツの高さでOHAttributedLabelスケールの高さを設定する方法は?

私は[demoLbl sizeToFit]を使用します。ラベルの高さは、テキストよりも大きく(または約10ポイント、テキストの長さによって異なる)、ビューの下部に(スクロール後に)空白の領域を与え、ラベルの幅を約2点。

元のテキスト(NSString)の高さをNSAttributedStringに入れてラベルのattributedTextプロパティに追加する前に計算した高さは、ラベルの高さとして設定するには小さすぎます。

NSAttributedStringの高さに従ってラベルの高さが調整されるように、ハックやトリックを適用できますか?

PS:具体的には、私はタグとしてOHAttributedLabelを追加したいと思いますが、まだ私には許可されていません。

答えて

10

私はOHattributedLabelの著者です。

サイズの計算について最近修正が加えられました。おそらくあなたの問題を解決することを確認してください。

私も与えられNSAttributedStringのCGSize返しNSAttributedString+Attributes.hsizeConstrainedToSize:fitRange:という名前のメソッドを追加(のUIKitのsizeWithFont:constrainedToSize:作品はかなり同じように、しかし帰属文字列とCoreTextのためではなく、プレーン刺されのUIKit) 実際OHAttributedLabelのsizeThatFits:呼び出し、このメソッドそのもの。

+0

残念ながら、変更が有効かどうかは確認できません。私は、スタイル付きのテキストでUIWebViewを使う代わりにNSAttributedStringの使用を断念しました。私はそれをテストすることができるいくつかの将来のプロジェクトになるかもしれません。私はあなたに連絡します。 – TRD

1

このカテゴリでは、より信頼性の高い高さが得られるかどうかを確認できます。 https://gist.github.com/1071565

使用

attrLabel.frame.size.height = [attrLabel.attributedString boundingHeightForWidth:attrLabel.frame.size.width]; 
+0

このカテゴリは、私がしたいことをしようとしているようです。 NSAttributedStringの高さを印刷すると正しい値が表示されますが、この高さをラベルに割り当ててもそれを受け付けません。以前よりも高くなっていますが、テキストを表示するのに必要な高さではありません。意外にも、ラベルの高さを印刷すると、NSAttributedStringの高さと高さがわかりました。不具合がどこにあるのか知りません。 – TRD

1

私はOHAttributedLabelクラスの実装にこのコードを追加:

// Toni Soler - 02/09/2011 
// Overridden of the UILabel::sizeToFit method 
- (void)sizeToFit 
{ 
    // Do not call the standard method of the UILabel class, this resizes the frame incorrectly 
    //[super sizeToFit]; 

    CGSize constraint = CGSizeMake(self.frame.size.width, 20000.0f); 
    CGRect frame = self.frame; 
    frame.size = [self sizeThatFits:constraint]; 
    [self setFrame:frame]; 
} 
// End Toni Soler - 02/09/2011 

はあなたのコードを共有するためにあなたのオリヴィエをありがとう!