“无法将 'NSLayoutDimension' 类型的值转换为预期的参数类型 NSLayoutAnchor<NSLayoutXAxisAnchor>

Posted

技术标签:

【中文标题】“无法将 \'NSLayoutDimension\' 类型的值转换为预期的参数类型 NSLayoutAnchor<NSLayoutXAxisAnchor>【英文标题】:"Cannot convert value of type 'NSLayoutDimension' to expected argument type NSLayoutAnchor<NSLayoutXAxisAnchor>“无法将 'NSLayoutDimension' 类型的值转换为预期的参数类型 NSLayoutAnchor<NSLayoutXAxisAnchor> 【发布时间】:2017-01-16 19:21:54 【问题描述】:

我正在尝试在我的 Swift 3 tableView 中添加一个子视图。我希望前导锚点与父视图宽度的 0.05 x 相关(tableView)。

当我写下以下内容时:

modalView.leadingAnchor.constraint(equalTo:margins.widthAnchor, constant: 0.05).isActive = true

我明白了

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

如何使用NSLayoutAnchor 创建所需的前导约束?

【问题讨论】:

尝试使用trailingAnchor 而不是widthAnchor 【参考方案1】:

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

无法将“NSLayoutYAxisAnchor”类型的值转换为预期的参数类型“NSLayoutAnchor XAxisAnchor>”

X 和 Y 是两个不同的轴

如果您做的事情与“顶部和底部”相关,那么您要相互约束的事情应该都属于同一个轴!这意味着您不能限制“从左到上”!你不能限制“从下到左”。它们必须是平行的!

您的情况不同,但根本原因仍然相同。也就是说你不能说“将元素的 size 限制在一个 point 上”。

同样,您不能将宽度限制在轴上。宽度可以被另一个维度限制,即它可以被限制为高度、宽度或深度,或者只是一个特定的值,比如 20.0

【讨论】:

【参考方案2】:

尝试使用以下代码:

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

【讨论】:

以上是关于“无法将 'NSLayoutDimension' 类型的值转换为预期的参数类型 NSLayoutAnchor<NSLayoutXAxisAnchor>的主要内容,如果未能解决你的问题,请参考以下文章