不能将iOS自动布局乘数设置为零

本文关键字:设置 iOS 自动布局 不能 | 更新日期: 2023-09-27 18:03:19

我想做的:我试图使用自动布局约束能够动态显示/隐藏视图,但我希望视图在隐藏时有效地占用0空间(所以正常的隐藏属性对我没用)。

方法:我使用NSLayoutConstraints(注意,使用Xamarin c#,而不是Objective C)编程地做我所有的布局,所以我试图通过编程在一组"可见"约束(正常布局,这总是工作得很好)和"隐藏"约束之间切换,它将宽度和高度设置为零。

我正在做一些基本的测试,我可以删除一个宽度约束,然后设置一个新的做任何我想要的。但是,每当我尝试定义(更不用说添加到视图中)一个带有乘数和常数为0的约束时,NSLayoutConstraint中的乘数就会神奇地变为1。例如,我的hide-width约束定义为:

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

我检查约束c1,乘数为1,常数为0。view是我要添加约束的视图(在本例中为UIButton)。

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

不能将iOS自动布局乘数设置为零

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

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

CGFLOAT_MIN适合我。

设置乘数为0.000001对我有效