2017-02-08 1 views
0

私は、本質的なサイズ(画像、ラベルなど)を持つ複数の動的サブビューの列を持っています。スーパービューをautolayoutのサブビューに合わせるにはどうしたらいいですか?スーパービューをオートレイアウトで最大の固有サイズに合わせるには

サブビューが動的でない場合は、最大のサブビューの先頭/末尾のエッジをスーパービューに制限するだけです。そう

enter image description here

のように私は私がリーディングエッジに揃えた後、末尾の制約が>= 8も持つことができるだろうと思って、サブビューがあまりにもあれば論理はトレーリングエッジが8よりも大きくすることができる」という狭いですが、サブビューがワイドの場合はスーパービューを展開して、少なくとも8の後端があるようにしてください。しかし、IBはその

警告が好きではありません。

  • サブビューが動的幅を有するスタックビューを使用することはできません。したがって、この例では、どの行も最も幅が広い可能性があります。

答えて

0

ここで私はどのように動作させるのですか。これが最善の方法であるかどうかはわかりません。スーパー

  • の幅が)(viewDidLayoutSubviewsをオーバーライドし、
    1. 計算をあなたのViewControllerでスーパー幅制約
    2. ための出口を作成して設定し>=
    3. にすべての末尾の制約を設定し

      1. あなたのすべてのサブビューのうち最大の幅。
      2. その幅にマージンを追加してください。
      3. は、以下の手順に従ってください
  • 0

    を算出した最大のスーパービューの幅を一定に設定し、

    1. は、メインビューに(ビューAを言う)ビューを追加します。
    2. 3つのラベル(ラベル1、ラベル2、ラベル3)をサブビューとしてビューAに追加します。
    3. ピンビューAを4面すべてのスーパービューに表示します。必要に応じて優先度が設定されている場合(コンテンツが拡張されている場合はビューAが画面外に出ないようにするため)、上下左右の制約を(> =)10以上に変更します。
    4. 定数1でビューAの右上、左端にピン1を固定するラベル1に制約を追加します。ラベル1のラベル2の上端のピンボトムは、制約優先度が必要に設定されている10に等しくなります。
    5. 同じ手順で2にもラベルを付けます。
    6. ラベル3と同じ手順で、ラベル2の下とビューAの右にピンを固定します。ビューAの下端にピンを固定します。ここで、下限は0に設定し、優先度を低く設定します。

    要件に基づいて制約値を変更できます。それが動作します。 ラベルを縮小できる場合は、圧縮抵抗の優先度を低く変更できます。

    UPDATE:ViewAについて下記のgitリンク

    について、制約以下の追加

      スーパー中心X及び(1,000 @ = 0)Yに
    • ViewA中心X及びY
    • (> = 10 @ 1000)
    • ViewA後尾およびSupreView後尾(> = 10 @ 1000)
    • ViewA TopおよびSuperVトップ(> = 10〜1000 @)
    • ViewAボトムとボトム末尾(1000年@> = 10)
    • 画像1(1000年@ = 0)をリードする、トップのスーパーする
    • 画像1は、後続のスーパーにIEW(> = 0 @ 1000)
    • 画像1画像2ボトム(= 10(> = 0〜1000 @)
    • 画像2画像3の底部に
    • 画像2は、大手スーパーする(=
    • 画像2は、後続スーパー0)1000年@)1000年@ (= 10100)
    • Image3 to superview Leadi NG(= 1000 @ 0)
    • 画像3(999 @ = 0)スーパーの底に(> = 1000 @ 0)
    • 画像3後続スーパーへ

    そこ、ViewAおよび設定の更新フレームを選択制約がないことを示す赤いマークが表示されます。 xcodeが示唆している欠けているConstraintを追加することもできますが、構築時にを削除してに設定してください。フレームを更新して実行します。あなたの要件に応じて動作することを願っています。

    +0

    label1/2/3からviewAまでの制約はどれくらい優先されますか?あなたはlabel3をviewAに下限制約が「低い」優先順位と言いましたが、label1のトップ、リーディング、viewAへのトレーリングはどうでしょうか? viewAに後続するlabel2、viewAに後続するlabel3。また、なぜlabel3からviewAまでの下限制約が低く設定されていますか? 私はいくつかのもので遊んでいましたが、コンテンツを抱きしめるとうまくいきましたが、IBはいつも制約について苦情を言いました。私はここで行ったことをhttps://github.com/iwllyu/TestAutoLayoutに入れました。これはxcode 7.3ですが、 – wyu

    +0

    ラベル3ボトムとビュー下の縦スペーシング制約はゼロに設定されており、優先順位は低くなっています。残りのすべての制約が必要です。私ははっきりしていると思う。 – rishu1992

    +0

    私はそれを試して、xcodeは制約について文句を言います – wyu

    関連する問題