2015-07-27 10 views
12

Ich habe seltsames Problem mit Autolayout in Swift 2,0Swift 2.0 constraintsWithVisualFormat

self.webView = WKWebView() 
self.view.addSubview(self.webView!) 

var viewBindingsDict: NSMutableDictionary = NSMutableDictionary() 
viewBindingsDict.setValue(self.webView, forKey: "webView") 

self.view.addConstraints(NSLayoutConstraint.constraintsWithVisualFormat("H:|[webView]|", options: 0, metrics: nil, views: viewBindingsDict)) 

self.view.addConstraints(NSLayoutConstraint.constraintsWithVisualFormat("V:|[webView]|", options: 0, metrics: nil, views: viewBindingsDict)) 

Und Ich erhalte Fehler:

'String' is not convertible to 'StringLiteralConvertible' 

für "H: | [webView] |" und "V: | [webView] |"

Ich weiß nicht, ob im fehlt etwas

Update: Screenshot from playground

+0

Haben Sie versucht, schlicht 'Dictionary' statt' NSMutableDictionary' verwenden? Wie 'let viewBindingsDict = [" webView ": self.webView!]'? – Michal

+0

Ich glaube auch, dass "addConstraints" die Tatsache nicht mögen mag, dass das 'webView' im' NSMutableDictionary' optional ist. – Michal

+0

Michal Ich bin mit Dictionary mit dem gleichen Ergebnis versucht. Sehen Sie sich den Screenshot an, Xcode zeigt auf "H: | [webView] |" als Problem. – iPera

Antwort

22

Sie sollten Ihre viewBindigsDict zu

var viewBindingsDict = [String: AnyObject]() 
viewBindingsDict["webView"] = webView 

ändern, wie in den Kommentaren vorgeschlagen, und auch in den Formatoptionen Sie können jedoch nicht 0 verwenden:

view.addConstraints(NSLayoutConstraint.constraintsWithVisualFormat("H:|[webView]|", options: NSLayoutFormatOptions(rawValue: 0), metrics: nil, views: viewBindingsDict)) 

oder mehr simplier als @MartinR vorgeschlagen:

view.addConstraints(NSLayoutConstraint.constraintsWithVisualFormat("H:|[webView]|", options: [], metrics: nil, views: viewBindingsDict)) 
+2

Oder nur 'Optionen: []', ähnlich (zum Beispiel) http://Stackoverflow.com/a/30769477/1187415. –

+0

@MartinR danke, das wusste ich nicht! –