当我以编程方式将其添加到UIstackview时,UIView并没有隐藏



我是xamarin ios和xcode的新手。我有一个具有UILabel,一个开关和一个水平UIStackView的表格视图单元格(中心对齐,分布 - 等间距(。我创建了一个包含文本字段的默认UIView。此默认视图将添加到 xib 中的UIStackView中。在我的程序中,我想在现有视图的右侧添加一个类似的视图,并将其水平对齐。我还保留了添加的所有输入视图的列表。

我的问题是我无法隐藏新添加的视图。如果我删除宽度约束,则宽度因占位符文本而异。如果我删除前导锚点约束,则它们不会均匀对齐。

当我尝试为新添加的视图(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;

您可以参考我的回答 这里 了解更多详情。

或者也可以直接删除控件。然后,当您要显示它时,请再次添加它。

相关内容

  • 没有找到相关文章

最新更新