Objective C 相当于 Swift addConstraints?
Objective C equivalent of Swift addConstraints?
我是使用代码自动布局的新手。
addConstaints(NSLayoutConstraint.constraintsWithVisualFormat("H:|-16-[v0]-16-|",options:NSLayoutFormatOptions(), metrics:nil ,views:["v0":thumbnailImageView]))
addConstaints(NSLayoutConstraint.constraintsWithVisualFormat("H:|-16-[v0]-16-|",options:NSLayoutFormatOptions(), metrics:nil ,views:["v0":thumbnailImageView]))
我正在尝试使用以下代码在 Objective C 中实现上述 swift 代码,但应用程序在加载时崩溃并出现以下错误
由于未捕获的异常而终止应用程序 'NSInvalidArgumentException',原因:'无法解析约束格式:
期待一个视图
H: |-16-[v0]-16-|
^'
[self addConstraints:[NSLayoutConstraint
constraintsWithVisualFormat:@"H:|-16-[v0]-16-|"
options:0
metrics:nil
views:NSDictionaryOfVariableBindings(thumbnailImageView)]];
[self addConstraints:[NSLayoutConstraint
constraintsWithVisualFormat:@"V:|-16-[v0]-16-|"
options:0
metrics:nil
views:NSDictionaryOfVariableBindings(thumbnailImageView)]];
.....
UIImageView * thumbnailImageView = [[UIImageView alloc] init];
thumbnailImageView.backgroundColor = [UIColor greenColor];
thumbnailImageView.translatesAutoresizingMaskIntoConstraints = false;
[self addSubview:thumbnailImageView];
thumbnailImageView.frame = CGRectMake(0, 0, 100, 100);
NSDictionaryOfVariableBindings
生成与您的 Objective-C 变量名称匹配的变量绑定。所以你需要把约束写成
[self addConstraints:[NSLayoutConstraint
constraintsWithVisualFormat:@"H:|-16-[thumbnailImageView]-16-|"
options:0
metrics:nil
views:NSDictionaryOfVariableBindings(thumbnailImageView)]];
或者您直接跳过 NSDictionaryOfVairableDBindings
并使用:
[self addConstraints:[NSLayoutConstraint
constraintsWithVisualFormat:@"H:|-16-[v0]-16-|"
options:0
metrics:nil
views:@{ @"v0" : thumbnailImageView } ];
这有点像 Swift 版本。 (目前手边没有编译器,所以第二部分可能会出现一些小的语法错误。会尽快检查)。
您错误地使用了宏NSDictionaryOfVariableBindings
您需要传递变量名
/* This macro is a helper for making view dictionaries for
+constraintsWithVisualFormat:options:metrics:views:. NSDictionaryOfVariableBindings(v1, v2, v3) is equivalent to
[NSDictionary dictionaryWithObjectsAndKeys:v1, @"v1", v2, @"v2", v3,
@"v3", nil]; */
[self addConstraints:[NSLayoutConstraint
constraintsWithVisualFormat:@"H:|-16-[thumbnailImageView]-16-|"
options:0
metrics:nil
views:NSDictionaryOfVariableBindings(thumbnailImageView)]];
[self addConstraints:[NSLayoutConstraint
constraintsWithVisualFormat:@"V:|-16-[thumbnailImageView]-16-|"
options:0
metrics:nil
views:NSDictionaryOfVariableBindings(thumbnailImageView)]];
我是使用代码自动布局的新手。
addConstaints(NSLayoutConstraint.constraintsWithVisualFormat("H:|-16-[v0]-16-|",options:NSLayoutFormatOptions(), metrics:nil ,views:["v0":thumbnailImageView]))
addConstaints(NSLayoutConstraint.constraintsWithVisualFormat("H:|-16-[v0]-16-|",options:NSLayoutFormatOptions(), metrics:nil ,views:["v0":thumbnailImageView]))
我正在尝试使用以下代码在 Objective C 中实现上述 swift 代码,但应用程序在加载时崩溃并出现以下错误
由于未捕获的异常而终止应用程序 'NSInvalidArgumentException',原因:'无法解析约束格式: 期待一个视图 H: |-16-[v0]-16-| ^'
[self addConstraints:[NSLayoutConstraint
constraintsWithVisualFormat:@"H:|-16-[v0]-16-|"
options:0
metrics:nil
views:NSDictionaryOfVariableBindings(thumbnailImageView)]];
[self addConstraints:[NSLayoutConstraint
constraintsWithVisualFormat:@"V:|-16-[v0]-16-|"
options:0
metrics:nil
views:NSDictionaryOfVariableBindings(thumbnailImageView)]];
.....
UIImageView * thumbnailImageView = [[UIImageView alloc] init];
thumbnailImageView.backgroundColor = [UIColor greenColor];
thumbnailImageView.translatesAutoresizingMaskIntoConstraints = false;
[self addSubview:thumbnailImageView];
thumbnailImageView.frame = CGRectMake(0, 0, 100, 100);
NSDictionaryOfVariableBindings
生成与您的 Objective-C 变量名称匹配的变量绑定。所以你需要把约束写成
[self addConstraints:[NSLayoutConstraint
constraintsWithVisualFormat:@"H:|-16-[thumbnailImageView]-16-|"
options:0
metrics:nil
views:NSDictionaryOfVariableBindings(thumbnailImageView)]];
或者您直接跳过 NSDictionaryOfVairableDBindings
并使用:
[self addConstraints:[NSLayoutConstraint
constraintsWithVisualFormat:@"H:|-16-[v0]-16-|"
options:0
metrics:nil
views:@{ @"v0" : thumbnailImageView } ];
这有点像 Swift 版本。 (目前手边没有编译器,所以第二部分可能会出现一些小的语法错误。会尽快检查)。
您错误地使用了宏NSDictionaryOfVariableBindings
您需要传递变量名
/* This macro is a helper for making view dictionaries for +constraintsWithVisualFormat:options:metrics:views:. NSDictionaryOfVariableBindings(v1, v2, v3) is equivalent to [NSDictionary dictionaryWithObjectsAndKeys:v1, @"v1", v2, @"v2", v3, @"v3", nil]; */
[self addConstraints:[NSLayoutConstraint
constraintsWithVisualFormat:@"H:|-16-[thumbnailImageView]-16-|"
options:0
metrics:nil
views:NSDictionaryOfVariableBindings(thumbnailImageView)]];
[self addConstraints:[NSLayoutConstraint
constraintsWithVisualFormat:@"V:|-16-[thumbnailImageView]-16-|"
options:0
metrics:nil
views:NSDictionaryOfVariableBindings(thumbnailImageView)]];