1

Android では、ScrollView を XML ファイルのルートとして使用し、その中に他のさまざまな種類のビューを含めて、スクロール動作を許可していました。

Swift 2.1 と Xcode 7.1.1 はどのようにこれを行うのでしょうか? Android の XML コードで行ったように、ストーリーボードは、入れたいさまざまな種類のビューをすべて挿入するのに十分な長さではありません。

私はAndroidの頭脳を持つiOSを考えています:(

4

2 に答える 2

2

インターフェース ビルダー オブジェクト ライブラリにも、iOS 用のスクロール ビューがあります。

ここに画像の説明を入力

ここで最初から最後まで、ストーリーボードで機能させる方法を示します。

1: ビュー コントローラーに移動し、[属性インスペクター] をクリックします。

2: [サイズ] を [推定] ではなく [フリーフォーム] に変更します。

3: ストーリーボードのメイン ビューに移動します。スクロール ビューではなく、トップ レベル ビューに移動します。

4: [Size Inspector] をクリックして、このビューを目的のサイズに設定します。身長を1000に変更しました。

これで、ストーリーボードにビューが設定されていることがわかります。これにより、簡単にデザインできるようにスクロールの高さ全体を確認できます。

5: スクロールビューにドロップしてストレッチし、ビュー全体を占めるようにします。これで、View Controller のビューにサイズ 320,1000 の scrollview が表示されるはずです。

次に、スクロールしてコンテンツを正しく表示する必要があります。

6: スクロールビューをクリックし、Identity Inspector をクリックします。

7: ContentSize の KeyPath を使用してユーザー定義のランタイム属性を追加し、次に SIZE のタイプを指定して、コンテンツ サイズを入力します。私にとっては(320、1000)です。

ストーリーボードにスクロール ビュー全体を表示したいので、それを伸ばして 320,1000 のフレームを持っていますが、これをアプリで機能させるには、フレームをスクロール ビューが表示されるように変更する必要があります。

8: タイプ RECT および 0,0,320,416 の KeyPath フレームでランタイム属性を追加します。

アプリを実行すると、フレームが 0,0,320, 416 のスクロール ビューが表示され、1000 までスクロールできます。次に、ランタイム属性により、適切に表示されるようにします。これらすべてを 1 行のコードなしで実行できます。

これはあなたが考えていたことですか?

スクロール ビューのサイズを変更する場合は、これを試すことをお勧めします。

ここに画像の説明を入力

あなたがしたいのは、スクロールビューをView Controllerにドロップして、制約を追加することです。

これまでスクロール ビューを使用したことがないため、これは機能しない可能性があります。

于 2015-12-07T17:49:25.247 に答える
2

0 行のコード

ストーリーボード十分な長さです:

必要なのは、フリーフォーム ビューを作成し、上から下への自動レイアウト制約を使用してすべてのコンテンツをそのフリーフォーム ビューに配置し、そのビューを のコンテンツとして使用することだけUIScrollViewです。

フリーフォーム

チュートリアル

  1. ビューコントローラー>属性インスペクターを表示>サイズ>フリーフォーム
  2. ビューコントローラー>サイズインスペクターを表示>シミュレートされたサイズ>フリーフォーム>幅と高さ
  3. を追加UIScrollView
  4. スーパービューに対して上/左、スクロールビューに対してスーパービューの下/右で、4 つの AutoLayout 制約を追加します。
    • Scroll.Top = Superview.Top Margin
    • Scroll.Leading = Superview.Leading
    • 下のレイアウト Guide.Top = Scroll.Bottom
    • Scroll.Trailing = Superview.Trailing
  5. UIViewをサブビューとして追加UIScrollView
  6. 4 つの AutoLayout 制約を繰り返します。同じルール: 固定された上部、サブビューの幅/高さに対するスーパービュー
    • Content.Top = Scroll.Top
    • Content.Leading = Scroll.Leading
    • Scroll.Bottom = Content.Bottom
    • Content.Trailing = Scroll.Trailing
  7. それにすべてのサブビューを追加しUIViewます。4. および 6. と同じルールを使用して、上から下 (および左から右)のAutoLayout チェーンの制約をたどることができることを確認ます
  8. コンテンツ ビューの垂直方向の高さは 7 で処理されます。幅については、この例では全幅にすることにしましコンテンツビューの幅がルート ビューの幅に対して どのように相対的であるかに注目してください。
    • Content.width = ビュー.幅

エッジからエッジへの連続的な制約

方法論

  • 次の構造を使用して、ビューの階層を作成します。

    1. ルートUIView(UIViewController
    2. UIScrollViewスクローラー (ルートとの関係でストレッチする必要があります)
    3. コンテンツUIView(スクローラーのスクロールバーと領域を決定します)
    4. 他のすべてはコンテンツビューに入ります
  • コンテンツのサイズを決定するものを理解する

    1. どちらかハードサイズ
    2. 含まれるビューとの関係 (連続制約)
    3. スーパービューへの相対性
  • 端から端までの AutoLayout 制約の連続性規則を理解する

    1. 囲んでいるビューのサイズを定義する方向について、上から下または左から右の連続した一連の制約に従うことができるはずです
    2. 単に要素を配置するだけであれば、そのような連続性は必要ありません。実際、必要のない連続性は競合を引き起こす可能性があります
  • 囲まれたビューに対してエンクロージャーのサイズを相対的に作成するには (例で垂直方向に達成しようとしているもの):

    1. 最初の上面図を固定位置にアタッチします
    2. その下の各ビューをその上のオブジェクトにアタッチします
    3. エンクロージャの底を最後のオブジェクトの底に取り付けます

GitHubでこのソリューションを見つけ、 Swift Recipesで詳細を確認してください。

于 2015-12-07T18:49:00.507 に答える