iOS视觉格式语言使用superview

时间:2013-12-20 14:33:23

标签: objective-c

我正在尝试在不使用管道(“|”)的情况下在superview下面设置一个视图。原因是因为superview并不总是与管道所代表的相同。

我尝试的代码是:

UIView *superview = self;
NSDictionary *metrics   = @{@"height" : @ROW_HEIGHT};
NSDictionary *views     = NSDictionaryOfVariableBindings(view, superview);
NSString *hConstraint   = @"H:|[view]|";
NSString *vConstraint   = @"V:[superview][view(height)]";
[self addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:hConstraint
                                                             options:0
                                                             metrics:nil
                                                               views:views]];
[self addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:vConstraint
                                                             options:0
                                                             metrics:metrics
                                                               views:views]];

这不会显示任何内容。当我将“[superview]”更改为管道时,它可以工作,但如上所述,我无法使用它

1 个答案:

答案 0 :(得分:0)

约束V:[superview][view]表示“将视图的上边缘与超视图的下边缘对齐”而不是“将超视图的上边缘与此视图的上边缘对齐”这是您想要的。您必须使用更详细的约束构造函数(constraintWithItem:attribute:relatedBy:toItem:attribute:multiplier:constant:)而不是可视格式语言来构造约束。