无法将iOS Autolayout乘数设为零

Cam*_*ter 1 c# xamarin.ios ios autolayout xamarin

我正在尝试做的事情: 我正在尝试使用自动布局约束来动态显示/隐藏视图,但是我希望视图在隐藏时有效地占用0空间(因此常规的hidden属性对我)。

方法: 我正在使用NSLayoutConstraints以编程方式完成所有布局(请注意,使用Xamarin C#,而不是Objective c),因此我试图以编程方式在一组“可见”约束之间进行切换(正常布局,这始终可以正常工作)和“隐藏”约束,将宽度和高度设置为零。

我正在做一些基本测试,可以删除宽度约束,然后设置一个新的约束来执行我想做的任何事情。但是,每当我尝试定义一个乘数且常数为零的约束(更不用说添加到视图中)时,NSLayoutConstraint中的乘数就会神奇地变为1。例如,我的隐藏宽度约束定义为:

NSLayoutConstraint c1 = NSLayoutConstraint.Create(view, NSLayoutAttribute.Width, NSLayoutRelation.Equal, null, NSLayoutAttribute.NoAttribute, 0f, 0f);
Run Code Online (Sandbox Code Playgroud)

我检查约束c1,乘数为1且常数为0。view是要添加约束的视图(UIButton在这种情况下为a)。

问题:是否可以像这样将自动布局约束乘数设置为0?如果是这样,那么有什么特别的UIButton事情阻止我这样做吗?理想情况下,我希望几乎可以进行此显示/隐藏UIView

小智 5

在iOS8中0乘数被打破/“被认为愚蠢”。

解决方案是将常数设置为0,并将乘数保持为1。


Арт*_*цев 5

CGFLOAT_MIN 对我来说效果很好。

  • CGFLOAT_MIN 非常接近于零。是的,您不能将其设置为零。 (3认同)