2015-02-11 19 views
-1

的亚型我似乎有与NSLayoutConstraint问题。从我可以收集(我希望我是错在这里),该.addConstrait()功能应该采取NSLayoutContraint类型的变量 - 但NSLayoutConstraint.constraintsWithVisualFormat()正在产生NSArray S'问题与布局约束:NSArray的是不是NSLayoutConstraint

这没有道理给我。我试着将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' 

有人能指出我要去的地方错了。

+0

退房LIB制图您的所有需求contraint:https://github.com/robb/Cartography – 2015-02-11 14:57:24

回答

3

constraintsWithVisualFormat(_:options:metrics:views:)回报NSLayoutConstraintNSArray

只要使用的addConstraints(_:)代替addConstraint(_:)

self.view.addConstraints(statusHorzVLFCons) 
        ^
+0

再次感谢。我知道我一定在做一些愚蠢的事情。 – Jimmery 2015-02-11 13:57:10

1

addConstraint方法期待一个约束,然而constraintsWithVisualFormat返回零个或多个约束的NSArray

尝试添加s。

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

苹果的命名约定通常可以帮助你在这里。注意constraintsWithVisualFormat是复数,而addConstraint是单数(而是复数)。