1

私はiOS開発にかなり慣れておらず、ストーリーボードにも非常に慣れていません。静的セルと「グループ化された」スタイルを持つ UITableView を使用して、基本的なフォームを作成しようとしています。

ストーリーボードを 1 つだけ作成して、iPhone と iPad の両方で使用することを望んでいます。これが推奨されるかどうかはわかりませんが、どちらのデバイスにも固有の要素を実際に持っていないため、多くの繰り返しが発生します。両方のデバイス ファミリ用に個別のストーリーボードを維持しています。

そこで、ラベルをテーブル セルの左側にドラッグし、テキスト入力を右側にドラッグしてから、自動レイアウトを使用していくつかの制約を設定します。 of 30 - ラベルとテキストフィールドの間の水平方向の間隔の制約 - ラベルの固定幅の制約

iPhone では問題なく動作しますが、iPad ではラベルとテキスト フィールドがテーブル セルの端を超えて拡張されます。これは、iPad が表のセルの左右に広い余白 (私が使用した 30pt の制約よりも広い) を持っているためです。

うまくいかない理由は明らかです。私の質問は、これは一般的なシナリオであり、簡単な解決策があると思うということだと思います。おすすめを聞くことに興味があります。ラベルとテキストフィールドをテーブルの端ではなくセルの端に制限する方法はありますか? そうでない場合:

  1. iPhone および iPad のストーリーボードを複製する
  2. QuickDialog などのフォーム ライブラリを使用する
  3. ラベルとテキストフィールドをプログラムで追加して配置する
  4. 他の提案はありますか?

自動レイアウトの制約を示すスクリーンショットを次に示します。 ここに画像の説明を入力

iPad でのレイアウトの動作は次のとおりです。 ここに画像の説明を入力

4

2 に答える 2

3

私も同じ問題を抱えてる。水平方向の制約ごとにアウトレットを作成し、現在のデバイスが iPad であるか iPhone であるかに応じてプログラムで定数を変更することで、長い道のりで解決しました。

ヘッダファイル:

@property (weak, nonatomic) IBOutlet NSLayoutConstraint *myLabelHorizontalConstraint;

viewDidLoad サブルーチンのメソッド ファイル:

if ([[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPad) {
        myLabelHorizontalConstraint.constant = 60;
} else myLabelHorizontalConstraint.constant = 30;

ストーリーボード シーン レイアウトの制約が 30 に設定されている場合は、「else」の部分を省略できます。これは、私の場合は iPhone の設定です。完全な例を示すために、上に置いただけです。

ストーリーボードのどこかでの設定や単一のサイズ変更コマンドなど、より普遍的なソリューションがあればいいのにと思います。iPad のスタティック セル グループ レイアウトは、iPhone よりも約 30 ポイント多くインデントしているようですが、自動レイアウトではこれを補っていません。多分私はどこかで何かを見逃しています。

于 2013-05-19T03:10:07.297 に答える
1

私は解決策 3 を好みます^^ cellForRow:atIndexPath:methode を使用し、そこにcell.titleLabel.titleラベルを付けてUITextFieldwith autoResizingMask(または similary)を に追加flexibleWidthしますcell.contentView

または、他の解決策: iPhone および iPad 用のカスタム Cell を作成し、これをロードします ^^ テキストフィールドの処理の問題も少なくなります :P これについてさらにヘルプが必要な場合や質問がある場合は、コメントしてください :)

于 2013-05-18T00:58:53.730 に答える