0

うーん、これは完全に奇妙に聞こえます。私は過去 3 時間かけて修正に費やしてきました。2 つのラベルを含むカスタム セルを含むテーブル ビューがあります。ラベルの高さは変数であり、メソッドを使用して計算されますsizeWithFont:constrainedToSize:lineBreakMode

cell = [tableView dequeueReusableCellWithIdentifier:sCellIdentifier];

cell.selectionStyle = UITableViewCellSelectionStyleNone;

cell.tariffPlanCellContentView.cellPrefixLabel.text = [NSString stringWithFormat:sPrefixStringWithColon, [self getPrefixStringAtIndexPath:indexPath]];
cell.tariffPlanCellContentView.cellPrefixLabel.textAlignment = UITextAlignmentLeft;
cell.tariffPlanCellContentView.cellPrefixLabel.frame = CGRectMake(cell.tariffPlanCellContentView.cellPrefixLabel.frame.origin.x,
                                                                  cell.tariffPlanCellContentView.cellPrefixLabel.frame.origin.y,
                                                                  kTableViewCellLabelWidth,
                                                                  [self getSizeForPrefixStringAtIndexPath:indexPath].height);

cell.tariffPlanCellContentView.cellDetailsLabel.text = [self getDetailStringAtIndexPath:indexPath];
cell.tariffPlanCellContentView.cellDetailsLabel.frame = CGRectMake(cell.tariffPlanCellContentView.cellDetailsLabel.frame.origin.x,
                                                                   cell.tariffPlanCellContentView.cellPrefixLabel.frame.origin.y + cell.tariffPlanCellContentView.cellPrefixLabel.frame.size.height + 3,
                                                                   kTableViewCellLabelWidth,
                                                                   [self getSizeForDetailsStringAtIndexPath:indexPath].height);

[cell.tariffPlanCellContentView.cellPrefixLabel sizeToFit];
[cell.tariffPlanCellContentView.cellDetailsLabel sizeToFit];

テーブル ビューの最初の読み込みでは、すべてのセルが 1 行だけで表示されます。テーブルビューをスクロールする(またはプログラムでテーブルビューを「再度」リロードする)場合にのみ、ラベルが修正されます。なぜそれをしているのかわからない?nibからロードされたカスタムセル内にありますcellPrefixLabelcellDetailsLabel両方持っていますnumberOfLines = 0

アップデート

  1. 私は Auto-Layout を使用していませんが、まだ iOS 5 をサポートしています。
  2. アプリケーションは iOS 6 で正常に動作し、バグは iOS 7 ベータ 6 にのみ存在します! ベータ版のせい?このようなことに直面する人はいますか?
  3. sizeToFit を削除しましたが、同じ問題が存在します。実際、sizeToFit はまったく役に立たず、iOS 6 では必要ありません。
4

3 に答える 3

1

すべての UITableviewcell 追加コードをデリゲート メソッドに移動して、試してみてください

- (void)tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath
于 2013-09-09T19:46:32.627 に答える
0

自動レイアウトを使用していますか?もしそうなら、おそらく sizeToFit を呼び出すべきではありません。ラベルのサイズは、テキストが設定された後に更新されるその固有のコンテンツ サイズから推測されます。

追加の洞察については、こちらの回答を参照してください。

于 2013-09-09T19:29:23.027 に答える
0

わかりました、私はついにその理由を知ることができました。これは実際にはバグです (または、これがそのように見えます)。メソッド sizeWithFont... は、iOS 7 の新しいフォント テキスト スタイルの 1 つと共に使用されます。この方法は、この新しいフォントでは正しくカウントされないようです。うまくいけば、明日のGMがこのバグを修正するでしょう. そうでない場合は、高さに約 10 ポイントを追加して回避策を使用する必要があります。

これは高さを固定するリロードと何の関係がありますか (sizeToFit を使用している場合)、私には本当にわかりません。新しい動的フォント システム全体が壊れやすいようです。

于 2013-09-09T20:47:24.480 に答える