我在一个非常简单的任务上有一个奇怪的问题。
我需要一个非常小的设置来重现问题:
|--------------------------------------|
| Parent View |
| |
||------------------------------------||
|| UILabel ||
||------------------------------------||
| |
| |
||------------------------------------||
|| UIView ||
||------------------------------------||
| |
| |
|--------------------------------------|
在上面的示例中,我们有一个带有 2 个子视图的父视图 --> 一个 UILabel 和一个简单的 UIView。我使用自动布局来应用上面显示的布局:
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 在这里有一个奇怪的行为,我无法找出导致该问题的原因。