布局约束问题:NSArray 不是 NSLayoutConstraint 的子类型
Problems with Layout Constraints: NSArray is not a subtype of NSLayoutConstraint
我似乎对 NSLayoutConstraint
有疑问。据我所知(我希望我在这里错了),.addConstrait()
函数应该采用 NSLayoutContraint
类型的变量 - 但 NSLayoutConstraint.constraintsWithVisualFormat()
正在生成 NSArray
s?
这对我来说没有意义。我试过将 NSArray
翻译成 NSLayoutConstraint
但我在这样做时遇到了错误。 NSLayoutConstraint.constraintsWithVisualFormat()
的输出肯定与 .addConstrait()
预期的类型相同??
如果不是为什么不呢?解决这个问题的最佳方法是什么?
代码如下:
let swiftViews:Dictionary[String: UIView] = ["status":status]
let swiftMetrics = ["standardWidth":200]
let views:NSDictionary = swiftViews as NSDictionary
let metrics:NSDictionary = swiftMetrics as NSDictionary
let statusHorzVFLCons = NSLayoutConstraint.constraintsWithVisualFormat("|-[status]-|", options: NSLayoutFormatOptions(0), metrics: metrics, views: views)
self.view.addConstraint(statusHorzVLFCons)
最后一行产生错误:
'NSArray' is not a subtype of 'NSLayoutConstraint'
谁能指出我哪里错了。
constraintsWithVisualFormat(_:options:metrics:views:)
returns NSArray
共 NSLayoutConstraint
。
只需使用 addConstraints(_:)
而不是 addConstraint(_:)
self.view.addConstraints(statusHorzVLFCons)
^
addConstraint
方法期望单个约束,但是 constraintsWithVisualFormat
returns 一个 NSArray
零个或多个约束。
尝试添加一个 s。
[self addConstraints:/*your NSLayoutConstraint constraintsWithVisualFormat: call */];
Apple 的命名约定通常可以帮助您解决这个问题。请注意 constraintsWithVisualFormat
是复数,而 addConstraint
是单数(而 addConstraints
是复数)。
我似乎对 NSLayoutConstraint
有疑问。据我所知(我希望我在这里错了),.addConstrait()
函数应该采用 NSLayoutContraint
类型的变量 - 但 NSLayoutConstraint.constraintsWithVisualFormat()
正在生成 NSArray
s?
这对我来说没有意义。我试过将 NSArray
翻译成 NSLayoutConstraint
但我在这样做时遇到了错误。 NSLayoutConstraint.constraintsWithVisualFormat()
的输出肯定与 .addConstrait()
预期的类型相同??
如果不是为什么不呢?解决这个问题的最佳方法是什么?
代码如下:
let swiftViews:Dictionary[String: UIView] = ["status":status]
let swiftMetrics = ["standardWidth":200]
let views:NSDictionary = swiftViews as NSDictionary
let metrics:NSDictionary = swiftMetrics as NSDictionary
let statusHorzVFLCons = NSLayoutConstraint.constraintsWithVisualFormat("|-[status]-|", options: NSLayoutFormatOptions(0), metrics: metrics, views: views)
self.view.addConstraint(statusHorzVLFCons)
最后一行产生错误:
'NSArray' is not a subtype of 'NSLayoutConstraint'
谁能指出我哪里错了。
constraintsWithVisualFormat(_:options:metrics:views:)
returns NSArray
共 NSLayoutConstraint
。
只需使用 addConstraints(_:)
而不是 addConstraint(_:)
self.view.addConstraints(statusHorzVLFCons)
^
addConstraint
方法期望单个约束,但是 constraintsWithVisualFormat
returns 一个 NSArray
零个或多个约束。
尝试添加一个 s。
[self addConstraints:/*your NSLayoutConstraint constraintsWithVisualFormat: call */];
Apple 的命名约定通常可以帮助您解决这个问题。请注意 constraintsWithVisualFormat
是复数,而 addConstraint
是单数(而 addConstraints
是复数)。