2011-03-10 9 views
6

私は、テキストを編集するためにtableViewセル内でUITextViewを使用しています。TableCellの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

を使用して、セルの幅を決定しようとしたが、時に風景の中に、これは常にiPadでもiPhoneとiPadの両方のための320.0

を返します。モードは、セルの幅が大きくなるべきではないか?

テオ

答えて

2

理想的には、カスタムUITableViewCellを作成し、layoutSubviewsであなたのコントロールのサイズ/位置を調整したいです。

あなたはtableView:cellForRowAtIndexPath:にコントロールを追加するつもりなら、あなたはのtableView自体から幅を取得することができます。

UITextField *textName = [[UITextField alloc] initWithFrame:CGRectMake(0, 0, tableView.frame.size.width-50, 24)]; 
1
  1. それが表に追加されます際にiPadの電池をお使いの後、サイズ変更され関数が戻ります。テキストフィールドのセルサイズを変更したい場合は、textName.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeightのようにすることができます。
  2. contentViewにカスタムビューを追加する必要があります(例:[cell.contentView addSubview:textName])。コンテンツビューは自動的に縮小され、編集モードなどが処理されます。

サブタイトルUITableViewCellは、レイアウトを微調整したい場合に少しオーバーキルです。自動サイズ変更がlayoutSubviewsを使用する手動サイズ設定よりも速いというのは私の印象です。