2

背景 / やりたいこと

  • iOS 7用にこれを構築しています
  • ストーリーボードを使用しています
  • UITableViews3.5 インチと 4 インチのデバイス間で視覚的な一貫性を保つために、同じ高さと距離を保ちたい2 つがあります。
  • したがって、4 インチ画面から 3.5 インチ画面への移行について、次のことを希望します。
  • テーブルビューは短くなりますが、高さは同じままです
  • 上部のテーブル ビューが同じ y 位置を維持するため
  • 下部のテーブル ビューの y 座標を上にシフトして、上部のテーブル ビューの下部と下部のテーブル ビューの上部との間の距離を同じに維持します。別名、それらの間の同じギャップ

ここに画像の説明を入力

私が試したこと

  • ストーリーボードでピン アイコンを使用して、両方の TableView を選択し、それらの高さを等しく設定して、ビュー コントローラーに次のコードを含めました。

[self.topTableView addConstraint:[NSLayoutConstraint constraintWithItem:self.bottomTableView 属性:NSLayoutAttributeBottom relatedBy:0 toItem:self.bottomTableView 属性:NSLayoutAttributeTop 乗数:1 定数:30]];

質問

  • 同じ距離を保ちながら同じ高さを保つにはどうすればよいですか

アップデート

ここに画像の説明を入力

4

2 に答える 2

3

これを行うには、Apple が推奨する方法を確認してください(「ビュー間の等間隔の作成」というタイトルのセクションにあります)。

編集: Apple は現在、この目的のためにスタック ビューの使用を支持しています。OS X 用のこの WWDC 2013 ビデオ、WWDC 2015 のこの iOSビデオを参照

それらは、制約のみのソリューションを提示しません。代わりに、表示されているビューの間に非表示の「スペーサー ビュー」を配置することを提案しています。

この背後にある理由は、制約システムが機能する方法に根ざしています。拘束関係は、常に厳密に 2 つのオブジェクト間にあります。間隔の制約では、その関係は、間隔が空けられているものと、間隔が空けられているものの間にある必要Xがあります。それでおしまい。スペース (それ自体がリレーションの結果) を他の値と等しくするための 3 番目のリレーションの余地はありません。

一方、高さ (および幅) の制約は関係ではありません。他に関係のない単純な定数を使用して、物の高さを設定できます。したがって、別のオブジェクトとの関係を指定する「余地」があります。たとえば、高さを別の高さ (または幅など) と等しくする必要があります。

したがって、何らかの形で相互に関連する制約が必要な場合は、スペースではなく高さと幅に注目してください。あなたの特定の例では、あなたUITableViewの s を非表示の s で囲み、UIViewそれらの高さを等しく設定し、それらのスペースを隣人/コンテナ0または他の低い定数に設定できます。

追加のボーナスとして、これはすべて IB で可能です。カスタム コードやサブクラスは必要ありません。

于 2014-01-19T18:53:11.600 に答える
0

上部のテーブル ビューには、スーパービューの上部に対する制約 (または上部レイアウトの制約)、下部のテーブル ビューに対する垂直方向の間隔の制約、および高さの制約が必要です。下部のテーブル ビューには、スーパービューの下部に対する制約と、上部のテーブル ビューと同じ高さの制約が必要です。必要な重要なことは、トップ テーブル ビューの高さ制限の優先順位を 1000 未満にすることです。これにより、画面の高さが変更されたときに、必須ではない 1 つのこと (<1000 高さ制限) が調整するもの。これらはすべて IB で設定できます。

編集後:

実際には、トップ テーブル ビューの高さの制約はまったく必要ありません。スーパービューの上部と下部、および 2 つのテーブル ビュー間に制約があるため、テーブル ビューの高さを等しくする制約があれば十分です。

于 2013-10-01T05:00:06.503 に答える