Когда я беру UIView, который является элементом представления вертикального стека, и изменяю свойство «скрытый» этого элемента с true на false, изменение автоматически анимируется, и элемент перемещается вниз по мере того, как становится видимым. Вместо этого я хочу, чтобы он двигался вверх. Есть ли способ сделать это?
Направление анимации при отображении элемента UIStackView
Ответы (2)
Перечисление UIStackViewDistribution
в заголовочном файле UIStackView сопровождается следующим комментарием для случая fill
:
Когда элементы не помещаются (переполняются) или заполняют (незаполняются), доступное пространство корректируется в соответствии с приоритетами сжатия или сжатия элементов, или, когда это неоднозначно, в соответствии с порядком расположения.
Вы можете повлиять на внешний вид анимации элементов, установив сопротивление сжатию содержимого и приоритеты охвата содержимого для элементов.
Так, например, при скрытии и отображении меток в вертикальном представлении стека с распределением fill
вы можете заставить каждую метку сжиматься и увеличиваться по сравнению с ее положением в arrangedSubviews
, гарантируя, что она имеет требуемый приоритет охвата содержимого для вертикальной оси:
label.setContentHuggingPriority(UILayoutPriorityRequired, for: .vertical)
Я только что ответил на аналогичный вопрос здесь: Анимировать скрытое свойство на UILabels в UIStackView вызывает разные анимации
Установка свойства contentMode
UIView
влияет на то, как выполняется анимация UIView
внутри UIStackView
.