Я новичок в 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;





Пожалуйста, обратитесь к этому документация о том, как использовать 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;
Вы можете обратиться к моему ответу здесь для получения более подробной информации.
Или вы также можете удалить элемент управления напрямую. Затем, когда захотите показать это, добавьте еще раз.
Вы пробовали использовать равномерное распределение заливки и не добавлять текстовое поле внутри нового представления, а просто добавлять его прямо в представление стека?