私はテキストを編集するために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
- iPadのセルは、関数が戻った後、テーブルに追加されたときにサイズ変更されます。テキストフィールドをセルに合わせてサイズ変更する場合は、
textName.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight
. - カスタムビューをcontentViewに追加する必要があります(例:
[cell.contentView addSubview:textName]
)コンテンツビューは、とりわけ編集モードを扱うために自動的に縮小されます。
UITableViewCellのサブクラス化は、レイアウトを調整したいだけならやややり過ぎです。自動サイズ変更は、layoutSubviewsを使用した手動サイズ変更よりも速いという印象です。