父视图(绿色矩形)包含许多子视图。
让我们只考虑一个子视图,它有一个水平位置,x偏移量为0。
每当父视图的宽度改变时,假设偏移量为a,我需要将子视图定位为偏移量等于a * x

据我所知,NSLayoutConstraint不允许基于包含绿色视图宽度NSLayoutAttributeWidth的红色子视图的属性NSLayoutAttributeLeft设置约束。
欢迎任何建议/参考如何达到NSLayoutConstraint所描述的比例定位。
发布于 2014-07-29 20:40:12
您不能在Interface Builder中对其进行布局,但您可以在代码中使用超级视图中的NSLayoutAttributeLeft。
这样,你可以给它一个倍数,这样当superview更新时,它将保持正确的位置。
如果这不起作用,你可以使用“间隔”视图。
所以你会在绿色的superview中看到它们,就像这样...
|[spacerView][redView] //using VFL然后,可以将间隔视图的宽度按比例设置为绿色视图的宽度。
只要将spacerView设置为隐藏,或者将alpha设置为0.0,它就不会显示。
发布于 2014-07-30 12:54:57
正如您所说的,您不能将子视图的left属性与superview的宽度相关联,但您可以将其与NSLayoutAttributeRight相关联,它具有与宽度相同的值。因此,您应该能够使用乘数(常数为0)来完成此操作,
[_greenView addConstraint:[NSLayoutConstraint constraintWithItem:_redView attribute:NSLayoutAttributeLeft relatedBy:NSLayoutRelationEqual toItem:_greenView attribute:NSLayoutAttributeRight multiplier:.1 constant:0]];当然,您需要根据绿色视图的宽度进行计算,以确定乘数应该是多少。因此,在我的示例中,greenView最初的宽度为200点,而我希望红色视图从左侧开始为20点,因此我使用0.1作为乘数。
https://stackoverflow.com/questions/25015351
复制相似问题