非常に単純なタスクで奇妙な問題があります。
問題を再現するには、非常に小さなセットアップが必要です。
|--------------------------------------|
| 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 であり、その問題の原因がわかりません。