В Android мы можем использовать ViewStates.Gone для видимости представления, но в iOS, если для свойства Hidden установлено значение false, представление все равно будет занимать пространство. Я использую Auto Layout, поэтому я подумал об изменении ограничений размеров, таких как:
FilterLayout.HeightAnchor.ConstraintEqualTo(0f).Active = true;
Это работает один раз. Но когда я снова пытаюсь расширить представление, вызывая
FilterLayout.HeightAnchor.ConstraintEqualTo(0f).Active = false;
или просто устанавливая новое значение:
FilterLayout.HeightAnchor.ConstraintEqualTo(200f).Active = true;
или записывая обе строки, размер не меняется.
(Размер FilterLayout изначально определяется его подпредставлениями, где вершина первого подпредставления соответствует его topMargin, а нижняя часть последнего подпредставления соответствует его bottomMargin.)
Я даже пытался изменить ограничение соседнего контейнера, поэтому это не так не присоединяется к FilterLayout, и в результате FilterLayout сжимается, и изменение ограничений обратно ничего не делает.
В верхней части страницы находится SearchLayout, ниже FilterLayout, ниже UserSearchList.
Скрытие работ FilterLayout:
FilterLayout.BottomAnchor.ConstraintEqualTo(UserSearchList.TopAnchor).Active = false;
UserSearchList.TopAnchor.ConstraintEqualTo(FilterLayout.BottomAnchor).Active = false;
SearchLayout.BottomAnchor.ConstraintEqualTo(UserSearchList.TopAnchor).Active = true;
UserSearchList.TopAnchor.ConstraintEqualTo(SearchLayout.BottomAnchor).Active = true;
Попытка показать его снова:
SearchLayout.BottomAnchor.ConstraintEqualTo(UserSearchList.TopAnchor).Active = false;
UserSearchList.TopAnchor.ConstraintEqualTo(SearchLayout.BottomAnchor).Active = false;
FilterLayout.BottomAnchor.ConstraintEqualTo(UserSearchList.TopAnchor).Active = true;
UserSearchList.TopAnchor.ConstraintEqualTo(FilterLayout.BottomAnchor).Active = true;
Не имеет значения, если вы установили только одно ограничение вида или оба, результат будет одинаковым .