UIView не скрывается, когда я добавляю его программно в UIstackview

Я новичок в xamarin ios и xcode. У меня есть ячейка tableview, в которой есть UILabel, переключатель и горизонтальный UIStackView (выравнивание по центру, распределение - равный интервал). Я создал UIView по умолчанию, содержащий текстовое поле. Этот вид по умолчанию добавлен к UIStackView в xib. В моей программе я хочу добавить подобное представление справа от существующего представления и выровнять его по горизонтали. Я также веду список всех добавленных входных представлений.

Моя проблема в том, что я не могу скрыть только что добавленные просмотры. Если я удалю ограничения ширины, то ширина будет варьироваться в зависимости от текста заполнителя. Если я удалю ведущие ограничения привязки, они не будут выровнены равномерно.

когда я пытаюсь установить свойство hidden для недавно добавленного представления (подвид UIStackView), оно скрывает его, но пространство остается как есть. Я попытался установить ограничения на false, использовал его с LayoutIfNeeded(), но это тоже не помогло.

Любые другие варианты, доступные для фактического скрытия подпредставления ??

 UIView newView = new UIView();
 InputStack.AddArrangedSubview(newView);

 var newInput = new UITextField();
  newView.AddSubview(newInput);
  newInput.TranslatesAutoresizingMaskIntoConstraints = false;
  newInput.WidthAnchor.ConstraintEqualTo(175).Active = true;
  newInput.HeightAnchor.ConstraintEqualTo(35).Active = true;
  newInput.TopAnchor.ConstraintEqualTo(newView.TopAnchor).Active = true;
  newInput.LeadingAnchor.ConstraintEqualTo(InputList.Last().InputTextField.TrailingAnchor, 30).Active = true;

Вы пробовали использовать равномерное распределение заливки и не добавлять текстовое поле внутри нового представления, а просто добавлять его прямо в представление стека?

Sam 09.03.2018 16:06
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
0
1
428
1

Ответы 1

Пожалуйста, обратитесь к этому документация о том, как использовать UIStackView.

Если вы хотите добавлять элементы слева направо, нет необходимости сначала добавлять newView, а затем поместить свой элемент управления в newView. Вы можете напрямую вставить newInput в UIStackView. Кроме того, поскольку вы использовали горизонтальный StackView, подвиды которого будут автоматически компоноваться от ведущего до замыкающего, верхнее и ведущее ограничения могут быть опущены. Требуется только ограничение ширины.

Из вашего кода вы используете NSLayoutAnchor для добавления ограничений. Вы должны отключить предыдущее ограничение, прежде чем захотите его изменить:

//Define a field
NSLayoutConstraint WidthConstraint = null;

//When you want to modify the width, try to disable the previous one
if (WidthConstraint != null)
{
    WidthConstraint.Active = false;
}
WidthConstraint = Control.WidthAnchor.ConstraintEqualTo(0);
WidthConstraint.Active = true;

Вы можете обратиться к моему ответу здесь для получения более подробной информации.

Или вы также можете удалить элемент управления напрямую. Затем, когда захотите показать это, добавьте еще раз.

Другие вопросы по теме