23

新しいView Controllerを作成し、スクロールビューをルートビューの子として追加し、「リーディング/トップ/トレーリング/ボトムスペースをスーパービューに」を0に設定して、スクロールビューが親を完全に埋めるようにしました。

次に、スクロール ビューの子としてボタンを追加し、15 のスペース制約を「スーパービュー」(スクロール ビュー) に追加しました。したがって、ボタンの上/左/右の境界線に 15 の間隔があり、スクロール ビューのコンテンツが「ボタンの下部 + 15」で終了することが期待されます。ただし、ボタンの幅が正しくありません (Xcode 5 Interface Builder、iOS 6/7 シミュレーターでテスト済み):

例

「スーパービューと同じ幅」でボタンを制約しても機能しません! まだ全幅を占めていません。

これを解決するにはどうすればよいですか?

4

1 に答える 1

53

良い解決策が見つかりました:)この動作の理由は、スクロールビューがコンテンツビューのサイズをサブビューで実際に必要なものに適応し、幅/高さを自動的に埋めないためです。幅を埋める必要がある場合、スクロール ビューには、画面の幅を埋めるビューが少なくとも 1 つ含まれている必要があります。

これらの手順で、スクロール ビュー (コンテンツ ビュー領域ではなく、スクロール ビュー自体) と同じ幅のビューを追加しました。 0/0/0/0" をスクロール ビューに追加します。

  • 1 つのルート ビューを持つ空のビュー コントローラーを想定する
  • スクロールビューを追加し、「スペースをスーパービューの上/左/右/下= 0/0/0/0」に制限を設定します
  • UI をスクロール ビューに追加し、必要に応じて制約を設定します。
  • 新しいビューを追加し、次の制約を付けて、「スクロールビューが幅を埋めるようにする」などの名前に変更します
    • スーパービューへの先頭/末尾/上部のスペース (スクロール ビューです!) = 0
    • ビューは単なるヘルパーであるため、非表示にするため、高さ 0 です。
    • 重要な部分: このビューとスクロール ビューを階層で選択し、それらを同じ幅に制限します。スクロール ビューはそのスーパービューに制限されているため、幅を受け取ります。次に、この制約により、スクロール ビューのコンテンツ ビューも (少なくとも) その幅になります。
于 2013-09-24T11:10:00.873 に答える