我想将子视图的中心约束为超视图总宽度的1/6。
例如:
如果superview的宽度= 6
subview的CenterX = 1
我在superview类(self)中编写了以下代码,以约束aSubview的centerX,它崩溃了:
// Hits here
[NSLayoutConstraint constraintWithItem:self.aSubview
attribute:NSLayoutAttributeCenterX
toItem:self
attribute:NSLayoutAttributeWidth
multiplier:1/6
constant:0];
// Crashes here
有没有办法用NSLayoutConstraints做到这一点?
答案 0 :(得分:2)
我有两个想法,为什么这可能会崩溃:
1)在这种情况下,自我是什么?你确定它是UIView的子类吗?
2)1/6应该导致0,这不是有效的乘数。尝试使用1.0 / 6
<强>更新强>
方法名称是
+ constraintWithItem:attribute:relatedBy:toItem:attribute:multiplier:constant:
您的代码中的 relatedBy:部分在哪里?
更新2:
似乎不允许这样做。我试图重现崩溃并记录以下错误:
布局属性配对无效
但是!你可以使用Trailing而不是Width来实现所需的布局,如果superview的左侧连接到屏幕,它实际上保持相同的值(参见图像以便更好地理解)。
这是经过测试和运作的:
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];
请务必将约束添加到要定位的视图的超级视图中。
答案 1 :(得分:1)
创建间隔视图。将其# Bicubic interpolation
library(akima)
interp_bicubic <- bicubic.grid(X, Y, Z, xlim = c(-2, 0), ylim = c(-2, 0),
dx = 2 / (200 - 1), dy = 2 / (200 - 1))
image(interp_bicubic)
设置为hidden
。 (隐藏的视图仍然参与布局。)将垫片的前缘固定到superview的前缘。将垫片的宽度限制为超视图宽度的1/6。
然后将“居中”视图的中心约束到间隔视图的后缘。