【问题标题】:Swift 2.0 constraintsWithVisualFormatSwift 2.0 约束WithVisualFormat
【发布时间】:2015-07-27 08:37:06
【问题描述】:

我在 Swift 2.0 中遇到了 AutoLayout 的奇怪问题

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))

我收到错误消息:

'String' is not convertible to 'StringLiteralConvertible'

对于 "H:|[webView]|""V:|[webView]|"

我不知道我是否错过了什么

更新:

【问题讨论】:

  • 你试过用普通的Dictionary代替NSMutableDictionary吗?喜欢let viewBindingsDict = ["webView" : self.webView!]
  • 另外,我相信addConstraints 可能不喜欢NSMutableDictionary 中的webView 是可选的。
  • Michal 我尝试使用 Dictionary 得到相同的结果。看截图,Xcode 指向“H:|[webView]|”作为问题。

标签: swift autolayout swift2


【解决方案1】:

您应该将您的 viewBindigsDict 更改为

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

根据 cmets 和格式选项中的建议,您不能使用 0,而是:

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

或者像@MartinR 建议的那样更简单:

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

【讨论】:

猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-10-07
  • 2016-02-21
  • 1970-01-01
  • 1970-01-01
  • 2015-09-16
  • 1970-01-01
  • 2018-01-21
相关资源
最近更新 更多