Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Swift 无法转换类型为';[NSLayoutConstraint]';到预期的参数类型';NSLayoutConstraint';_Swift_Constraints_Ios Autolayout - Fatal编程技术网

Swift 无法转换类型为';[NSLayoutConstraint]';到预期的参数类型';NSLayoutConstraint';

Swift 无法转换类型为';[NSLayoutConstraint]';到预期的参数类型';NSLayoutConstraint';,swift,constraints,ios-autolayout,Swift,Constraints,Ios Autolayout,我使用的是Xcode 9 beta 5。我务实地添加了反向方 addConstraint(NSLayoutConstraint.constraints(withVisualFormat: "H: |-16-[v0]-16-|" , options: NSLayoutFormatOptions(), metrics: nil, views: ["v0":thumbnailImageView])) addConstraint(NSLayoutConstraint.constraints(withV

我使用的是Xcode 9 beta 5。我务实地添加了反向方

addConstraint(NSLayoutConstraint.constraints(withVisualFormat: "H: |-16-[v0]-16-|" , options: NSLayoutFormatOptions(), metrics: nil, views: ["v0":thumbnailImageView]))

addConstraint(NSLayoutConstraint.constraints(withVisualFormat: "V: |-16-[v0]-16-|" , options: NSLayoutFormatOptions(), metrics: nil, views: ["v0":thumbnailImageView]))
我收到错误信息:

无法将类型“[NSLayoutConstraint]”的值转换为预期的参数类型“NSLayoutConstraint”

错误图像


如何删除此错误?

问题在于
NSLayoutConstraint.constraints(带VisualFormat:options:metrics:views)
返回一个约束数组,而不仅仅是一个约束

自iOS8以来,建议激活约束,而不是将其添加到视图中。对于单个约束,您只需将其
isActive
属性设置为
true
,iOS会将该约束添加到适当的视图中以激活它

对于多个约束,请使用
NSLayoutConstraint.activate
激活约束,而不是将其添加到视图中:

NSLayoutConstraint.activate(NSLayoutConstraint.constraints(withVisualFormat: "H:|-16-[v0]-16-|", metrics: nil, views: ["v0":thumbnailImageView]))
NSLayoutConstraint.activate(NSLayoutConstraint.constraints(withVisualFormat: "V:|-16-[v0]-16-|", metrics: nil, views: ["v0":thumbnailImageView]))

问题在于
NSLayoutConstraint.constraints(带VisualFormat:options:metrics:views)
返回一个约束数组,而不仅仅是一个约束

自iOS8以来,建议激活约束,而不是将其添加到视图中。对于单个约束,您只需将其
isActive
属性设置为
true
,iOS会将该约束添加到适当的视图中以激活它

对于多个约束,请使用
NSLayoutConstraint.activate
激活约束,而不是将其添加到视图中:

NSLayoutConstraint.activate(NSLayoutConstraint.constraints(withVisualFormat: "H:|-16-[v0]-16-|", metrics: nil, views: ["v0":thumbnailImageView]))
NSLayoutConstraint.activate(NSLayoutConstraint.constraints(withVisualFormat: "V:|-16-[v0]-16-|", metrics: nil, views: ["v0":thumbnailImageView]))

UIView
有两种方法可以添加约束:

  • func addConstraint(\uconstraint:NSLayoutConstraint)

    需要单个
    NSLayoutConstraint

  • func addConstraints(\uconstraints:[NSLayoutConstraint])

    它需要一个数组
    NSLayoutConstraint
    实例


只需使用适当的API即可。UIView有两种方法来添加约束:

  • func addConstraint(\uconstraint:NSLayoutConstraint)

    需要单个
    NSLayoutConstraint

  • func addConstraints(\uconstraints:[NSLayoutConstraint])

    它需要一个数组
    NSLayoutConstraint
    实例



只需使用适当的API即可

您必须使用“addConstraints”而不是“addConstraint”

您必须使用“addConstraints”而不是“addConstraints”

在需要单个实例的地方传递一个列表。如何删除此错误?顺便说一句,您可以使用
[]
而不是
NSLayoutFormatOptions()
…或者您可以完全关闭
选项:[]
,因为这是默认值。您可以在需要单个实例的位置传递一个列表。如何删除此错误?顺便说一下,您可以使用
[]
而不是
NSLayoutFormatOptions()
…或者您可以关闭
选项:[]因为这是默认值。我支持这个答案。。。通过设置isActive=true,如果添加它们,它将在必要时激活。。。否则您可能会遇到问题,如视图不在层次结构中等。程序无法成功完成执行。线程1:信号SIGABRT。程序停止执行并被线程捕获..通过此链接,您可以下载停止执行并被线程捕获的程序..您是否将thumbnailView添加为另一个视图的子视图?控制台怎么说?由于未捕获的异常“NSInvalidArgumentException”而终止应用程序,原因:“无法解析约束格式:应为视图H:|-16-[v0]-16-|我支持此答案。。。通过设置isActive=true,如果添加它们,它将在必要时激活。。。否则您可能会遇到问题,如视图不在层次结构中等。程序无法成功完成执行。线程1:信号SIGABRT。程序停止执行并被线程捕获..通过此链接,您可以下载停止执行并被线程捕获的程序..您是否将thumbnailView添加为另一个视图的子视图?控制台怎么说?由于未捕获的异常“NSInvalidArgumentException”而终止应用程序,原因:“无法分析约束格式:应为视图H:|-16-[v0]-16-|请注意,addConstraints的定义有注释:此方法将在未来版本中被弃用,应避免使用。相反,请使用+[NSLayoutConstraint activateConstraints:]注意,addConstraints的定义有一条注释:此方法将在将来的版本中被弃用,应避免使用。而是使用+[NSLayoutConstraint activateConstraints:]圣母。。我花了整整20分钟想弄明白。谢谢你,伙计!圣母。。我花了整整20分钟想弄明白。谢谢你,伙计!