Ios 自动布局-使用NSLAYUTATTRIBUTECENTERX时,倍增器使用什么比例?
使用Ios 自动布局-使用NSLAYUTATTRIBUTECENTERX时,倍增器使用什么比例?,ios,autolayout,ios-autolayout,Ios,Autolayout,Ios Autolayout,使用nsLayoutAttributeCenter属性时,乘数为1会产生与参考视图匹配的中心。增大该值会将其向左移动,减小值(接近0)会将其向右移动 通过使用2.5、1和0.625的乘数,我已经能够通过反复试验(在超级视图中均匀分布3个视图)大致获得我想要的结果。在混乱中,我发现200集中在参考视图的左边缘(增加的幅度也超过了这一点,但不会移动视图),0.5集中在右边缘(朝着0减小会使视图进一步向左移动) 下面是我的问题: 这是什么 有没有一个公式可以用来准确地以这种方式放置视图,还是将永远是
nsLayoutAttributeCenter
属性时,乘数为1会产生与参考视图匹配的中心。增大该值会将其向左移动,减小值(接近0)会将其向右移动
通过使用2.5、1和0.625的乘数,我已经能够通过反复试验(在超级视图中均匀分布3个视图)大致获得我想要的结果。在混乱中,我发现200集中在参考视图的左边缘(增加的幅度也超过了这一点,但不会移动视图),0.5集中在右边缘(朝着0减小会使视图进一步向左移动)
下面是我的问题:
当乘数不是1.0时,计算中心约束意味着什么是棘手的。我在Xcode 6中做了一些实验,下面是我的结论 所讨论的约束的形式为
A.center.x=B.center.x*m+c
,其中A
和B
是涉及的视图,m
是约束的乘数,c
是约束的常数
让我们假设B的center.x
由一些其他约束固定。那么我相信autolayout的行为就好像它使用了这个算法一样:
CGFloat bxg=[G convertPoint:B.center fromView:B.superview].x
A.superview
的坐标系,并将其存储为A.center.x
“自动布局”会更新帧,以便间隔符继续具有相同的宽度。我发现,如果将视图与superview中心X对齐(我相信Y轴也是如此),则可以使用以下公式计算预期视图中心的倍增系数:
Coeff = superview.width / view.center.X * 0.5
也就是说,如果superview的宽度为600,则需要将视图的中心放置在superview宽度的0.25上,然后视图的中心=150
Coeff = 600 / 150 * 0.5 = 2
如果您需要对称视图,那么
Coeff = 600 / 450 *0.5 = 0.666
因此,如果您知道视图中心(CoV)为0.25,则公式为:
Coeff = 1 / CoV * 0.5
比例基于视图的中心位置。因此,在iPhone5上,centerX(控制器的self.view)的值为160(纵向)。如果我试图均匀地隔开几个视图,我不会使用中心约束。关于这个概念的优秀迷你教程。谢谢感谢您回答这个问题,并再次感谢您回答了问题的根源。:)不确定这是否有助于解决我目前的问题,但无论如何,这都是值得学习的好东西。谢谢