无法将iOS Autolayout倍数设置为零

时间:2015-07-16 19:22:23

标签: c# ios xamarin xamarin.ios autolayout

我想做的事情: 我试图使用autolayout约束来动态显示/隐藏视图,但我希望视图在隐藏时有效占用0空间(因此正常的隐藏属性对我来说并不有用)。 / p>

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

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

NSLayoutConstraint c1 = NSLayoutConstraint.Create(view, NSLayoutAttribute.Width, NSLayoutRelation.Equal, null, NSLayoutAttribute.NoAttribute, 0f, 0f);

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

问题:是否可以将autolayout约束乘数设置为0?如果是这样,UIButton有什么特别的东西阻止我这么做吗?理想情况下,我希望能够显示/隐藏几乎任何UIView

3 个答案:

答案 0 :(得分:4)

CGFLOAT_MIN对我来说很好。

答案 1 :(得分:3)

0乘数被打破/"被认为是愚蠢的"在iOS8中。

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

答案 2 :(得分:0)

将乘数设置为0.000001对我有用。