1

UITableViewCell私は自分の 用にいくつかの異なる を作成しましたtableViewController。これは、戻ってくるものに応じて表示したいデータのビットが異なるためです。このため、UITableViewCellそれぞれ高さが異なります。

これはすべて問題ありませんが、私UILabelの の 1 つは大きな を表示する必要があり、非常に大きいため、2 行目にワードラップする必要がありました。ここでの唯一の問題は、書式設定NSStringが台無しになることです。UITableViewCell

私の質問は、のサイズが長すぎるために wordrap を使用する必要がUILabelあるときに、何らかのアクションにフラグを立てたりキャプチャしたりすることは可能ですか?NSStringNSString

または、物理的な長さ(文字列に含まれる文字数ではない)を計算する方法があるNSStringので、再フォーマットする必要があると判断できUITableViewCellます..

どんな助けでも大歓迎です。

4

2 に答える 2

3

通常の方法は、sizeWithFont:constrainedToSize:lineBreakMode: を使用して文字列のサイズを取得することです。次のように使用します。

CGSize stringSize = [theString sizeWithFont:[UIFont fontWithName:@"Helvetica Neue" size:12] constrainedToSize:CGSizeMake(320, 3000) lineBreakMode:NSLineBreakByWordWrapping ];

これはテーブル セルの全幅に設定されていますが、代わりにラベルの幅を使用することをお勧めします。

于 2013-02-14T02:33:13.210 に答える
0

よく理解しているかどうかわかりませんが、テーブルビューセルの高さは正しいですか? おそらくUITextViewにNSStringがあり、このtextviewのコンテンツの高さはtableviewcellよりも高くなっています。さて、最初にUITextviewのコンテンツを計算し、リストに追加し、heightforRowAtindexPathが呼び出されたときに、新しい高さ(コンテンツテキストビュー)と何かを計算する必要があります...そして最大長を解決するには、文字または制限の制限をカウントする必要がありますライン用..

いくつかの便利なコード:

//resize height with content of UITextView
CGRect frame = _textView.frame;
frame.size.height = _textView.contentSize.height;
_textView.frame = frame;

//delegate textview to calculate limit for text.
- (void)textViewDidChange:(UITextView *)textView{

NSInteger restrictedLength=140;

NSString *temp=textView.text;

if([[textView text] length] > restrictedLength){
    textView.text=[temp substringToIndex:[temp length]-1];
}

}

heightforRowAtIndexPath を呼び出す前に、UITextview からコンテンツの制限/サイズを計算する必要があることを覚えておいてください。呼び出されたとき、セルの最大高さを知る必要があります。

于 2013-02-14T02:05:55.470 に答える