Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/xamarin/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Xamarin FluentLayout和控件最小/最大高度_Xamarin_Xamarin.ios_Mvvmcross - Fatal编程技术网

Xamarin FluentLayout和控件最小/最大高度

Xamarin FluentLayout和控件最小/最大高度,xamarin,xamarin.ios,mvvmcross,Xamarin,Xamarin.ios,Mvvmcross,有没有办法用FluentLayout定义UI元素的最小/最大高度 我的情况是这样的: 黑色UIView必须至少为50px高。如果它的任何子控件(红色UIView或BigTextUILabel)超过50px,它必须拉伸以容纳其内容 如果我定义约束: blackView.Above(Table), blackView.Height().GreaterThanOrEqualTo(50), blackView.Height().GreaterThanOrEqualTo().HeightOf(redVi

有没有办法用FluentLayout定义UI元素的最小/最大高度

我的情况是这样的:

黑色UIView必须至少为50px高。如果它的任何子控件(红色UIView或BigTextUILabel)超过50px,它必须拉伸以容纳其内容

如果我定义约束:

blackView.Above(Table),
blackView.Height().GreaterThanOrEqualTo(50),
blackView.Height().GreaterThanOrEqualTo().HeightOf(redView) 
blackView.Above(Table),
blackView.Height().GreaterThanOrEqualTo(50),
blackView.Height().EqualTo().HeightOf(redView) 
blackView将覆盖整个屏幕(如果表为空)。另一方面,如果我更改约束:

blackView.Above(Table),
blackView.Height().GreaterThanOrEqualTo(50),
blackView.Height().GreaterThanOrEqualTo().HeightOf(redView) 
blackView.Above(Table),
blackView.Height().GreaterThanOrEqualTo(50),
blackView.Height().EqualTo().HeightOf(redView) 
“红色视图”将被拉伸,以使红色wiew(在本例中)的高度等于黑色视图的高度。因此,第一个和第二个UILabel不会位于黑色UIView的中心


我找不到任何关于优先级或全高的例子。所以说实话,我不知道它是如何工作的。

尽管你在写这个问题上付出了很多努力(谢谢!),但我不完全确定你看到的问题是什么。。。如果问题只是阻止“黑色”填充屏幕,那么您可以在表上添加一个约束来阻止它消失?也许,考虑添加一个完整的代码样本来提问,也可以阅读FullHeightOf是什么,什么是优先,实际上有两个问题,1。阻止黑色填充屏幕。2.红色必须在黑色(垂直)和足够高以适应它自己的内容。我不知道该向表中添加哪个约束,因为表应该是拉伸其高度的约束。如果我对表施加了大于或等于的约束,我可能会以黑色的部分结束,而不是显示(如果bigtext UILabel真的很大),以使它更清晰:红色和黑色应该拉伸以适应它的内容,而不是更多。黑色应至少为50像素高。如果红色小于50px高,则应该在黑色的中间(垂直)。桌子应该伸展以填满屏幕。我解决了它。但老实说,我不知道出了什么问题。问题是在黑色中拉伸太多,所以我玩了一点SetContentCompressionResistancePriority和SetContentHuggingPriority,但它没有给我带来任何好处。所以我在新的类中一点一点地复制了我的代码,它开始工作了。这让我很困惑,因为我正在清理和重建我的项目,并重新启动。可能是一些模拟器或缓存错误。我找到了导致问题的原因。为了重用,我让视图由几个从UIView继承的UI对象组成。如果在UIView的构造函数中初始化约束,一切都会正常工作。另一方面,如果您在重写的方法UpdateConstraints UI中初始化约束,则会变得异常。