我想将子视图的中心限制为超级视图总宽度的1/6。
例如:
如果Superview的宽度= 6
子视图的CenterX = 1
我在superview类(自己)中编写了以下代码,以约束aSubview的centerX,它崩溃了:
// Hits here
[NSLayoutConstraint constraintWithItem:self.aSubview
attribute:NSLayoutAttributeCenterX
toItem:self
attribute:NSLayoutAttributeWidth
multiplier:1/6
constant:0];
// Crashes here
有没有办法用NSLayoutConstraints做到这一点?
我有两个想法可能会导致崩溃:
1)在这种情况下自我是什么?您确定它是UIView子类吗?
2)1/6的结果应为0,这不是有效的乘数。尝试使用1.0 / 6
更新:
方法名称是
+ constraintWithItem:attribute:relatedBy:toItem:attribute:multiplier:constant:
您的代码中的relatedBy:部分在哪里?
更新2:
看来这毕竟是不允许的。我试图重现崩溃,并记录以下错误:
布局属性配对无效
但!如果将超级视图的左侧连接到屏幕,则可以使用“尾随”而不是“宽度”来获得所需的布局,它实际上具有相同的值(请参见图像以更好地理解)。
经过测试并可以正常工作:
NSLayoutConstraint *constraint = [NSLayoutConstraint constraintWithItem:self.aView
attribute:NSLayoutAttributeCenterX
relatedBy:NSLayoutRelationEqual
toItem:self.view
attribute:NSLayoutAttributeTrailing
multiplier:1.0/2
constant:0];
[self.view addConstraint:constraint];
确保将约束添加到要定位的视图的超级视图。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句