У меня есть UIStackView, который использует автоматическую компоновку. Когда экран вращается, я деактивирую и активирую различные ограничения, чтобы переместить представление стека туда, где я хочу.
Я проверил с помощью Reveal, чтобы убедиться, что представление стека расположено правильно, и это так.
В представлении стека у меня есть несколько представлений, и для выравнивания представления стека установлено значение «Заполнить», чтобы гарантировать, что они расширяются, чтобы заполнить ширину представления стека. Это работает правильно, за исключением...
Когда я поворачиваю устройство, затем поворачиваю обратно в исходную ориентацию. Тогда представление стека позиционируется правильно, однако представления внутри него — нет. Вместо того, чтобы заполнять представление стека, они оставляют зазор сбоку. Обычно где-то между 20 и 50 баллами. Но всегда одна и та же сумма на одном и том же устройстве.
Это меня сбило с толку. Единственное решение, которое я нашел для правильного заполнения представления стека при обратном вращении, заключается в следующем:
override func viewDidLayoutSubviews() {
sliders.alignment = UIStackViewAlignment.Bottom
sliders.alignment = UIStackViewAlignment.Fill
}
Кажется, это пинает представление стека и заставляет его правильно перекомпоновывать представления. Но по ощущениям довольно липкий.
Кто-нибудь сталкивался с этой ошибкой и нашел лучшее решение?
Я пробовал все это вокруг setNeedsLayout(), setNeedsDisplay() и т. д., и т. д. Но пока только приведенный выше код устранил проблему.