如果我们在流畅的布局中订购两个控件,一个在另一个
之下this.SubviewsDoNotTranslateAutoresizingMaskIntoConstraints();
this.AddConstraints(
_lblTitle.AtTopOf(this, 10)
, _lblTitle.AtLeftOf(this, 15)
, _lblTitle.AtRightOf(this, 5)
, _lblFullName.Below(_lblTitle, 5)
, _lblFullName.AtLeftOf(this, 0)
, _lblFullName.AtRightOf(this, 0));
...我们希望在某些情况下隐藏_lblTitle。我们可以通过绑定来实现。
set.Bind(_lblTitle)
.For(c => c.Hidden)
.To(vm => vm.ShowTitle)
.WithConversion("Visibility");
问题是_lblTitle不会崩溃,当然会让我们在开始时留下空白。
我们可以尝试在某些情况下从标签中删除文本。这确实是标签文本的一部分,但不会覆盖我们定义的10点边距。什么可能导致不良影响,特别是如果标签具有不同的背景颜色。
我没有尝试绑定控件的高度以隐藏它,因为我不知道设置高度的值是什么,如果我想显示大小灵活的隐藏控件。
我在FluentLayout的QuickLayout解决方案中找不到任何解决方案。
答案 0 :(得分:0)
当SizeClass发生变化时,我们会遇到类似的情况。我们根据需要添加和删除约束。
在你的例子中,你不能为_lblFullName' s Top创建约束并将其存储为私有变量。
this.fullNameTopConstraint =
this._lblFullName.Below(this._lblTitle).ToLayoutConstraints().First()
然后,当_lblTitle
的可见性发生更改时,约束将更新为this
的顶部或_lblTitle
的底部