&#34;无法转换类型的值&#39; NSLayoutDimension&#39;预期的参数类型NSLayoutAnchor <nslayoutxaxisanchor>

时间:2017-01-16 19:21:54

标签: ios autolayout nslayoutconstraint nslayoutanchor

我正在尝试在Swift 3 tableView中添加子视图。我希望前导锚点与我的父视图(modalView.leadingAnchor.constraint(equalTo:margins.widthAnchor, constant: 0.05).isActive = true )的宽度0.05 x相关。

当我写下以下内容时:

Cannot convert value of type 'NSLayoutDimension' to expected argument type 'NSLayoutAnchor<NSLayoutXAxisAnchor>'

我得到了

NSLayoutAnchor

如何使用{{1}}创建所需的主要约束?

2 个答案:

答案 0 :(得分:1)

我刚才有类似的问题。 我得到了:

  

无法将'NSLayout Y AxisAnchor'类型的值转换为预期参数类型'NSLayoutAnchor&lt; \ NSLayout X AxisAnchor&gt;'

X和Y是两个不同的轴

如果你做了一些与'顶部和底部'相关的事情,那么你想要相互约束的东西都应该属于同一个AXIS!意思是你不能约束'从左到上'!你不能约束'从下到左'。它们必须平行!

你的情况不同,但根本原因仍然是一样的。那就是你不能说“将元素的 size 约束到 point ”。为什么?因为你需要两个点来约束某些东西的大小到两点之间的距离

同样,您不能将宽度约束到轴。宽度可以用另一个维度约束,即它可以被约束到高度或宽度或深度,或者仅限于特定值,如20.0

答案 1 :(得分:0)

尝试使用以下代码:

modalView.leadingAnchor.constraint(equalTo:margins.widthAnchor as! NSLayoutAnchor<NSLayoutXAxisAnchor>, constant: 0.05).isActive = true