0

UITableViewセルをサブクラス化し、プログラムでUITextFieldを追加したいと思います。テキストフィールドの作成方法を理解しました。ただし、デバイスが回転したときにサイズを変更するのに問題があります。これが私のコードです(これselfはUITableViewCellサブクラスであることに注意してください)

self.myTextField = [[UITextField alloc] init];
self.myTextField.frame = CGRectMake(400, 6,TEXT_FIELD_WIDTH ,TEXT_FIELD_HEIGHT);
[self addSubview:self.myTextField];
self.myTextField.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleLeftMargin;

私が欲しいのは、向きに関係なく、テキストフィールドが画面の中央付近(ポイント400付近)にx原点を持ち、画面の右端との距離を維持し、それ以外の場合は幅を拡大することです(柔軟な左マージン) )。

これは、行をコメントアウトしてautoresizingMaskデバイスを縦向きで起動した場合に正常に機能します。ただし、autoresizing行を追加し直すと、テキストフィールドがポイント400、EVENINPORTRAITから離れます。

助言がありますか?コンテンツビューにテキストフィールドも追加しようとしましたが、何も変更されていないようです。

編集:私はlayoutsubviewsメソッドを使用することを考えましたが、さまざまな座標の全体をハードコーディングする必要があるため、これはちょっと粗雑に思えます。したがって、これを行う別の方法がある場合は、それが優先されます。

編集:たとえば、テキストフィールドを中央付近から開始するには、フレームxOriginを約150にする必要があります。

4

2 に答える 2

1

400真ん中に置きたい場合は、ハードコーディングしないでください。を使用するだけself.bounds.size.width * 0.5です。

現時点ではわかりませんが、2回目の編集では、セルがデフォルトで縦向きのiPhoneに適したフレーム(320ポイント)で初期化されているため400、ビューの初期境界の外にあることが示唆されているようです。テキストフィールドは最初はセルの境界外にあるため、柔軟な左マージンの自動サイズ変更マスクを使用して、そのように維持しようとします。

于 2012-07-09T15:58:00.853 に答える
1

autoresizingMaskの設定を間違えています。次のように、CビットごとのOR演算子を使用して、 UIViewAutoresizingで説明されている定数を組み合わせた値を指定する必要があります。

self.myTextField.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleLeftMargin;
于 2012-07-09T15:45:49.097 に答える