/ / UITextView in TableCell、ユニバーサルアプリの正しい幅を設定する方法 - iphone、ipad、uitableview、uitextview、ユニバーサル

TableCellのUITextView、ユニバーサルアプリケーションの正しい幅を設定する方法 - iphone、ipad、uitableview、uitextview、universal

私はテキストを編集するためにtableViewセル内のUITextViewを使用しています。

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {

UITextField *textName = [[UITextField alloc] initWithFrame:CGRectMake(0, 0, 270, 24)];

[cell addSubview:textName];
[textName release];

}

これはうまくいきますが、iPad上で実行すると正しくありません。

セルの幅を決めようとしました cell.contentView.frame.size.width

しかし、これはiPhoneとiPadの両方で常に320.0を返します。

またiPadでは、ランドスケープモードでセルの幅を大きくしないでください。

テオ

回答:

回答№1は2

理想的にはカスタムを作成します UITableViewCell コントロールのサイズや位置を layoutSubviews.

にコントロールを追加する場合 tableView:cellForRowAtIndexPath:その後、tableView自体から幅を取得できます。

UITextField *textName = [[UITextField alloc] initWithFrame:CGRectMake(0, 0, tableView.frame.size.width-50, 24)];

回答№2の場合は1
  1. iPadのセルは、関数が戻った後、テーブルに追加されたときにサイズ変更されます。テキストフィールドをセルに合わせてサイズ変更する場合は、 textName.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight.
  2. カスタムビューをcontentViewに追加する必要があります(例: [cell.contentView addSubview:textName])コンテンツビューは、とりわけ編集モードを扱うために自動的に縮小されます。

UITableViewCellのサブクラス化は、レイアウトを調整したいだけならやややり過ぎです。自動サイズ変更は、layoutSubviewsを使用した手動サイズ変更よりも速いという印象です。