【问题标题】:Programmatically Auto-Layout Functions以编程方式自动布局功能
【发布时间】:2016-03-16 15:42:41
【问题描述】:

我对这两个功能有疑问。对于功能 1:

  func constrainWidth(width: CGFloat) -> [NSLayoutConstraint] {
    let constraints = NSLayoutConstraint.constraintsWithVisualFormat("H:[item(width)]", metrics: ["width" : width], views: ["item" : self])
    self.superview?.addConstraints(constraints)
    return constraints as! [NSLayoutConstraint]
}

我在“self.superview?.addConstraints(constraints)”处收到一个错误,他们对“constraints”有问题 它说: 无法将 [Any Object] 类型的值转换为预期的参数类型“[NSLayoutConstraint]”

这里是功能 2:

 class func constraintsWithVisualFormat(visualFormat: String,  options: NSLayoutFormatOptions, views: [NSObject : AnyObject]) -> [AnyObject] {
    return NSLayoutConstraint.constraintsWithVisualFormat(visualFormat, options: options, metrics: nil, views: views)
}

我在“return NSLayoutConstraint.constraintsWithVisualFormat(visualFormat, options: options, metrics: nil, views: views)”处收到错误,他们的“views”有问题 它说:*无法将类型“[NSObject:AnyObject]”的值转换为预期的参数类型“[String:AnyObject]”

这些功能不会相互影响,我只需要他们两个方面的帮助。我以前没有这个问题,我相信是最近才出现的,我相信是因为新的 swift。

【问题讨论】:

    标签: ios swift object


    【解决方案1】:

    对于功能1

    缺少options 参数,它甚至无法在我的XCode 中编译。当我添加options 参数时,它编译并运行没有问题。

    对于功能2

    它准确地说明了问题所在 - 您为视图传递的参数定义为 [NSObject : AnyObject],但它必须是 [String: AnyObject]

    【讨论】:

    • 你太棒了!我让 func 1 工作。对我应该为 func 2 提出什么建议?我知道它应该是一个字符串,但我不确定是什么?或者如果我需要将视图制作成字典并具有键和值? @TheEye
    • 好吧,你可以在 func 1 中看到视图字典的内容是什么——一个字符串键和一个视图对象。视图字典的函数参数的定义必须是 [String: AnyObject]。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-09-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多