NSLayoutConstraint `视图不是视图字典中的键`
NSLayoutConstraint `view is not a key in the views dictionary`
简介:
是的,我已经查看了与该主题相关的所有问题,none 的答案有所帮助。下面的代码不断向我抛出 NSInvalidArgumentException
异常,我仍然看不出它有什么问题。
问题:
我已经尝试了所有可能的尝试。它仍然像往常一样崩溃并显示相同的错误消息,即; 'Unable to parse constraint format:
sceneView is not a key in the views dictionary.'
.
这是我的做法:
- (SCNView *)sceneView { // Lazy Load
if (_sceneView == nil) {
_sceneView = [[SCNView alloc] initWithFrame:self.bounds];
_sceneView.backgroundColor = [UIColor blackColor];
_sceneView.scene = self.scene; // Load scene
_sceneView.translatesAutoresizingMaskIntoConstraints = NO;
}
return _sceneView;
}
然后在-(void)commonInit
里,我加上:
if ([self.sceneView isDescendantOfView:self] == NO) {
[self addSubview:self.sceneView];
}
[self.sceneView addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"H:|[sceneView]|"
options:0
metrics:nil
views:NSDictionaryOfVariableBindings(self.sceneView)]];
紧接着,它异常终止。为什么?
实际上,NSDictionaryOfVaribaleBindings 是一个宏
_NSDictionaryOfVariableBindings(@"" # VA_ARGS, VA_ARGS, nil),
您使用的变量将与代码中的变量相同,因此您将获得 @{"self.sceneView" :self.sceneView} 的 NSDictionary,您需要更改为类似 @"H:|[self.sceneView]|" 让它工作。
使用自我。只是为了调用一个 returns 对象的方法,它不是你可以用作键的东西,你做错了。使用以下方式,它将解决您的崩溃问题:
[self.sceneView addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"H:|[_sceneView]|" options:0 metrics:nil views:NSDictionaryOfVariableBindings(_sceneView)]];
简介:
是的,我已经查看了与该主题相关的所有问题,none 的答案有所帮助。下面的代码不断向我抛出 NSInvalidArgumentException
异常,我仍然看不出它有什么问题。
问题:
我已经尝试了所有可能的尝试。它仍然像往常一样崩溃并显示相同的错误消息,即; 'Unable to parse constraint format:
sceneView is not a key in the views dictionary.'
.
这是我的做法:
- (SCNView *)sceneView { // Lazy Load
if (_sceneView == nil) {
_sceneView = [[SCNView alloc] initWithFrame:self.bounds];
_sceneView.backgroundColor = [UIColor blackColor];
_sceneView.scene = self.scene; // Load scene
_sceneView.translatesAutoresizingMaskIntoConstraints = NO;
}
return _sceneView;
}
然后在-(void)commonInit
里,我加上:
if ([self.sceneView isDescendantOfView:self] == NO) {
[self addSubview:self.sceneView];
}
[self.sceneView addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"H:|[sceneView]|"
options:0
metrics:nil
views:NSDictionaryOfVariableBindings(self.sceneView)]];
紧接着,它异常终止。为什么?
实际上,NSDictionaryOfVaribaleBindings 是一个宏
_NSDictionaryOfVariableBindings(@"" # VA_ARGS, VA_ARGS, nil),
您使用的变量将与代码中的变量相同,因此您将获得 @{"self.sceneView" :self.sceneView} 的 NSDictionary,您需要更改为类似 @"H:|[self.sceneView]|" 让它工作。
使用自我。只是为了调用一个 returns 对象的方法,它不是你可以用作键的东西,你做错了。使用以下方式,它将解决您的崩溃问题:
[self.sceneView addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"H:|[_sceneView]|" options:0 metrics:nil views:NSDictionaryOfVariableBindings(_sceneView)]];