10

非常に単純なタスクで奇妙な問題があります。

問題を再現するには、非常に小さなセットアップが必要です。

|--------------------------------------|
|             Parent View              |
|                                      |
||------------------------------------||
||              UILabel               ||
||------------------------------------||
|                                      |
|                                      |
||------------------------------------||
||              UIView                ||
||------------------------------------||
|                                      |
|                                      |
|--------------------------------------|

上記の例では、2 つのサブビューを持つ親ビューがあります --> UILabel と単純な UIView。上記のレイアウトを適用するために autolayout を使用しています。

Constraints for UILabel:
Leading Space to superview = 0
Trailing Space to superview = 0
Fixed Height constraint (e.g. 80pt)
Top Space constraint (e.g. 50pt)

The UIView subview has the same constraint types (the values for height and top space differs).

したがって、このセットアップで期待しているのは、両方のサブビューが親の全幅を採用することです。これは、先頭と末尾のスペースをゼロにする必要があると定義したためです。したがって、親ビューの幅を変更すると、サブビューの幅も変更され、整列されたままになります。

親ビューのサイズが 200x400 pt であるとします。ポートレートでサンプルをビルドして実行すると、すべて問題ないように見えます。横向きに回転しても、すべてがうまく見えます。親ビューの幅、さらにはサブビューの幅も大きくなりました。しかし、ポートレートに戻すと、uilabels の幅はすぐにアニメーションなしでターゲットの幅になります:

|--------------------------------------|
|             Parent View              |
|                                      |
|    (immediately has target size)     |
|          |--------------|            |
|          |    UILabel   |            |
|          |--------------|            |
|                                      |
|   (this subview is still             |
|             animating its width)     |
|   |------------------------------|   |
|-->|           UIView             |<--|
|   |------------------------------|   |
|                                      |
|                                      |
|--------------------------------------|

親ビューの幅と uiview サブビューの幅は適切にアニメーション化されます。ここで奇妙な動作をする唯一の uilabel であり、その問題の原因がわかりません。

4

4 に答える 4

0

autolayoutに設定した方が良いstory boardです。制約を設定するときは、View Controller ですべてのサブ ビューが選択されていることを確認してください。そのためには、次のことを行う必要があります。

  1. メイン ビュー コントローラーのビューをクリックします。
  2. プレスCtrl+A
  3. [自動レイアウトの問題を解決] をクリックします。
  4. View Controllerで不足している制約を追加するを選択します

次に、すべてのサブビューに制約が設定され、回転中に完全に機能します。

于 2014-04-02T12:19:25.380 に答える