Ios NSLAYOUTCONSTRAINTWITHVISUALFORMAT can';t参考超视图

Ios NSLAYOUTCONSTRAINTWITHVISUALFORMAT can';t参考超视图,ios,objective-c,nslayoutconstraint,visual-format-language,Ios,Objective C,Nslayoutconstraint,Visual Format Language,下面是一些代码: UIView *c = [[UIView alloc] initWithFrame:CGRectZero]; [self addSubview:c]; c.translatesAutoresizingMaskIntoConstraints = NO; c. backgroundColor = [UIColor lightGrayColor]; [self addConstraints:[NSLayoutConstraint constraintsWithVisualFormat

下面是一些代码:

UIView *c = [[UIView alloc] initWithFrame:CGRectZero];
[self addSubview:c];
c.translatesAutoresizingMaskIntoConstraints = NO;
c. backgroundColor = [UIColor lightGrayColor];
[self addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"H:|-[c(>=600)]-|" options:NSLayoutFormatDirectionLeadingToTrailing metrics:nil views:NSDictionaryOfVariableBindings(c)]] ;
[self addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"V:|[c]|" options:NSLayoutFormatDirectionLeadingToTrailing metrics:nil views:NSDictionaryOfVariableBindings(c)]] ;![enter image description here][1]
为什么它最后看起来像这样?我的superView有什么问题吗

以下是如何设置我的包含视图:
c的超视图是
self
。非
self.superview

因此,这些行应该是:

[self addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"H:|-[c]-|" options:0 metrics:nil views:NSDictionaryOfVariableBindings(c)]] ;
[self addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"V:|-0-[c]-0-|" options:0 metrics:nil views:NSDictionaryOfVariableBindings(c)]] ;
此外,UIView的指定初始化器是
-initWithFrame:
仅调用
init
不能保证工作。所以第一行应该是

UIView *c = [[UIView alloc] initWithFrame:CGRectZero];

嗯。现在看起来约束失败是因为保存所有内容的视图是UIScrollView的子类

另外,“V:|-0-[c]-0-|”中的0是不必要的,应该写“V:|[c]|”对不起,调用self.superview实际上是调试代码。我正在用原始代码更新我的帖子。我也换成了CGRectZero。仍然不工作顶部和左侧约束按预期工作。如果这是一个复制/粘贴,而c实际上是一个UIView,那么它没有内在的大小来阻止它正确调整大小。因此,我怀疑问题出在包含视图中。在你没有给我们的代码里。包含的视图是什么?它的尺寸是多少?这是图中的绿色风景吗?只有一个视图是绿色的吗?是的,包含视图的是绿色背景的蓝色轮廓视图。这种观点有问题。它是在IB中设置的。我将添加图像。我们在这张图像中看到了什么?我看到一个蓝色的轮廓,一个绿色的矩形和一个灰色的圆形矩形。这些对象中的哪一个是上面代码所在的视图(即,什么是self)?我复制了您现在的代码,得到了一个全高的灰色视图,距离左右边缘有20个点(不过>=600没有任何作用,没有它也一样)。这就是你想要的吗?是的,这就是我想要的。浅灰色框是我要添加约束的视图。蓝色轮廓框是该视图的超视图,该视图为自视图。什么会影响self使约束代码停止工作?蓝色框是什么?这是一个视图,还是一个深蓝色视图,顶部是浅蓝色视图?什么是自我?自我是蓝色框。这是一个带边框的视图。