-1

我似乎遇到了问题NSLayoutConstraint。从我能收集到的信息(我希望我在这里错了),该.addConstrait()函数应该采用类型变量NSLayoutContraint- 但NSLayoutConstraint.constraintsWithVisualFormat()正在生成NSArrays?

这对我来说没有意义。我尝试将NSArrayover 翻译成 a 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'

有人可以指出我哪里出错了。

4

2 回答 2

3

constraintsWithVisualFormat(_:options:metrics:views:)的回报NSArrayNSLayoutConstraint

只需使用addConstraints(_:)而不是addConstraint(_:)

self.view.addConstraints(statusHorzVLFCons)
                       ^
于 2015-02-11T13:55:51.010 回答
1

addConstraint方法期望单个约束,但是constraintsWithVisualFormat返回NSArray零个或多个约束。

尝试添加一个 s。

[self addConstraints:/*your NSLayoutConstraint constraintsWithVisualFormat: call */];

Apple 的命名约定通常可以在这里为您提供帮助。请注意,它constraintsWithVisualFormat是复数,而是addConstraint单数(并且addConstraints是复数)。

于 2016-03-26T21:15:36.180 回答