2

UITableViewControllerのサブクラスを使用します。この表では、スタイル付きの標準セルを使用していますUITableViewCellStyleDefault。このスタイルには。が含まれていtextLabelます。テキストプロパティにテキストを割り当ててから、テキストの長さ(ポイント単位)が必要になります。

cell = [tableView dequeueReusableCellWithIdentifier:@"CellID"];
if (cell == nil) {
    cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:@"CellID"];
}
cell.textLabel.text = @"some text";
textWidth = [cell.textLabel.text sizeWithFont:cell.textLabel.font].width;

NSLog(@"text width = %f",textWidth);
NSLog(@"Font = '%@'",cell.textLabel.font);

しかし、このコードを実行すると、0.00000の幅が返されます。

text width = 0.000000
Font = '<UICFFont: 0x68b4a90> font-family: "Helvetica"; font-weight: bold; font-style: normal; font-size: 0px'

このテキストの実際の幅を取得するにはどうすればよいですか(通常は表示され、幅が0ではありません)

編集:
コードを含む行を挿入するとif (cell.font){}、正しいサイズと幅が得られます。

cell = [tableView dequeueReusableCellWithIdentifier:@"CellID"];
if (cell == nil) {
    cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:@"CellID"];
}
cell.textLabel.text = @"some text";

// added line:
if (cell.font){}

textWidth = [cell.textLabel.text sizeWithFont:cell.textLabel.font].width;

NSLog(@"text width = %f",textWidth);
NSLog(@"Font = '%@'",cell.textLabel.font);

これを表示します:

text width = 98.000000
Font = '<UICFFont: 0x68dc400> font-family: "Helvetica"; font-weight: bold; font-style: normal; font-size: 20px'

ただし、セルのゲッター「フォント」は非推奨です。fontsize / textwidthを取得するための非推奨ではないメソッドはありますか?

4

2 に答える 2

0

同じ厄介な問題。これはうまくいったようです:

[cell layoutIfNeeded];

しかし、そうではありません...まったく。何らかの奇妙な理由で、フォントのサイズが約 17 から約 20 に変更されます。

を使用し[UIFont boldSystemFontOfSize:[UIFont labelFontSize]]ます。

于 2012-05-13T07:33:35.740 に答える
-1

おそらくフォントサイズを明示的に設定することで、テキストラベルの幅を取得できます。

CGSize textLabelSize = [textLabel.text sizeWithFont:[UIFont systemFontOfSize:17]];

役立つリンクは次のとおりです。UITableViewCellでのUILabel幅の動的計算

それが役に立てば幸い!:)

于 2012-04-18T17:50:16.300 に答える