AutoLayout i UILabel zmieniają rozmiar animacji, nie działając poprawnie podczas obracania urządzenia
Mam dziwny problem z bardzo prostym zadaniem.
Potrzebuję bardzo małej instalacji, aby odtworzyć problem:
|--------------------------------------|
| Parent View |
| |
||------------------------------------||
|| UILabel ||
||------------------------------------||
| |
| |
||------------------------------------||
|| UIView ||
||------------------------------------||
| |
| |
|--------------------------------------|
W powyższym przykładzie mamy widok rodzica z 2 widokami -> UILabel i prosty UIView. Używam autoukładania, aby zastosować układ pokazany powyżej:
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).
Tak więc w tej konfiguracji oczekuję, że oba widoki przeglądowe przyjmą pełną szerokość swojego rodzica, ponieważ zdefiniowaliśmy, że spacja początkowa i końcowa powinna wynosić zero. więc jeśli zmienisz szerokość widoku nadrzędnego, szerokość podpowiedzi również powinna się zmienić, aby pozostać wyrównana.
powiedzmy, że widok rodzica ma wymiar 200x400 pt. kiedy buduję i uruchamiam mój przykład w portrecie, wszystko wygląda dobrze. kiedy obracam się w krajobraz, wszystko nadal wygląda dobrze. szerokość widoków macierzystych, a nawet szerokość widoków dodatkowych, powiększyła się. ale teraz, gdy obracam się z powrotem do portretu, szerokość uilabels natychmiast osiąga docelową szerokość bez animacji:
|--------------------------------------|
| Parent View |
| |
| (immediately has target size) |
| |--------------| |
| | UILabel | |
| |--------------| |
| |
| (this subview is still |
| animating its width) |
| |------------------------------| |
|-->| UIView |<--|
| |------------------------------| |
| |
| |
|--------------------------------------|
szerokość widoków macierzystych i szerokość widoków podglądu widoku są animowane prawidłowo. jest to tylko uilabel, który ma tutaj dziwne zachowanie i nie mogę dowiedzieć się, co powoduje ten problem.