如何在Swift 3中将NSConstraints添加到UITextView

A.R*_*Roe 1 uiview ios swift swift3

所以我已经成功地将几乎所有项目转换为Swift 3,除了从一个View Controller中我手动添加约束.

我得错了

    view.addSubview(textView)

    textView.translatesAutoresizingMaskIntoConstraints = false
    view.addSubview(textView)

    let views = ["textView": textView]
    var constraints = NSLayoutConstraint.constraints(withVisualFormat: "V:|-70-[textView]-8-|", options: NSLayoutFormatOptions(rawValue: 0), metrics: nil, views: views)
    constraints += NSLayoutConstraint.constraints(withVisualFormat: "H:|-8-[textView]-8-|", options: NSLayoutFormatOptions(rawValue: 0), metrics: nil, views: views)
    NSLayoutConstraint.activate(constraints)
Run Code Online (Sandbox Code Playgroud)

所以我改成了

textView.translatesAutoresizingMaskIntoConstraints = true
view.addSubview(textView)

textView.center = CGPoint(x: view.bounds.midX, y: view.bounds.midY)
textView.autoresizingMask = [UIViewAutoresizing.flexibleLeftMargin, UIViewAutoresizing.flexibleRightMargin, UIViewAutoresizing.flexibleTopMargin, UIViewAutoresizing.flexibleBottomMargin]
Run Code Online (Sandbox Code Playgroud)

我想要做的就是在视图控制器中添加一个UITextViewa UIView,它占据整个高度和宽度,并在中心垂直和水平.我明显错过了我的更新代码,并且不确定为什么我之前的代码拒绝运行,因为我在Swift 2.2中工作.

任何人都可以回答在Swift 3中添加约束的正确方法吗?

更新:

这是我的原始代码转换为Swift 3.0的错误

2016-09-06 22:08:38.751636 APPNAME [570:65129] - [_ SwiftValue nsli_superitem]:无法识别的选择器发送到实例0x17044a0e0 2016-09-06 22:08:38.752963 APPNAME [570:65129] *终止应用程序由于未被捕获异常'NSInvalidArgumentException',原因是: ' - [_ SwiftValue nsli_superitem]:无法识别的选择发送到实例0x17044a0e0'*第一掷调用堆栈:(0x18430c1c0 0x182d4455c 0x184313278 0x184310278 0x18420a59c 0x184d42104 0x184d40948 0x184d3f79c 0x184d3f340 0x100221ec0 0x1002289ac 0x100228be8 0x18a0e5b08 0x18a19f4cc 0x18a19f3a4 0x18a19e6ec 0x18a19e138 0x18a19dcec 0x18a19dc50 0x18a0e2c78 0x1875ab40c 0x1875a00e8 0x18759ffa8 0x18751cc64 0x1875440d0 0x18a0d8348 0x1842b97dc 0x1842b740c 0x1842b789c 0x1841e6048 0x185c67198 0x18a150bd0 0x18a14b908 0x100171a04 0x1831c85b8)libc ++ abi.dylib:以NSException类型的未捕获异常终止(lldb)

Bar*_*uik 6

我在以下代码的最后一行出现此错误:

    scrollView = UIScrollView()
    scrollView.translatesAutoresizingMaskIntoConstraints = false
    self.view.addSubview(scrollView)

    contentView = UIView()
    contentView.translatesAutoresizingMaskIntoConstraints = false
    scrollView.addSubview(contentView)

    let viewDict = [
        "contentView": contentView,
        "scrollView": scrollView,
    ]

    let vFormat = "V:|[contentView]|"
    let constraints = NSLayoutConstraint.constraints(withVisualFormat: vFormat, options: [], metrics: nil, views: viewDict)
Run Code Online (Sandbox Code Playgroud)

当我在最后一行设置调试器时,它将viewDict类型显示为[String: UIView?](注意这里是可选的).

我更改声明时不会发生错误,如下所示:

    let viewDict: [String: UIView] = [
Run Code Online (Sandbox Code Playgroud)