无法通过id找到约束

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了无法通过id找到约束相关的知识,希望对你有一定的参考价值。

我有一个Center X Alignment Constraint按钮,这个约束的identifier"constBtnSound"

我试图用以下代码获取此constraint但无法找到它。

for const in btnSound.constraints {
  if const.identifier == "constBtnSound" {
        ...
    }
}

约束的属性:

enter image description here

按钮的所有约束:

enter image description here

答案

这是the UIView.addConstraint documentation所说的:

约束必须仅涉及接收视图范围内的视图。具体而言,涉及的任何视图必须是接收视图本身或接收视图的子视图。

由于button.superview不是button并且不是button的子视图,因此button不能保留约束。

由于buttonbutton.superview的子视图,因此约束可以由button.superview(或button.superview的任何祖先)保留。

但是,您可以为它创建一个插座,而不是按ID搜索约束:

@IBOutlet var buttonXCenterConstraint: NSLayoutConstraint!

将插座连接到故事板中的约束。

以上是关于无法通过id找到约束的主要内容,如果未能解决你的问题,请参考以下文章

未找到 ID 的 Android 片段

Kotlin 在片段中找不到按钮 ID,为啥?

通过 Spotify API 从播放列表中获取 ID

由于未找到 ID 错误的视图,列表片段未出现

如何在 ViewPager 中从 Activity 移动到 Fragment?未找到片段 ID 的视图

片段中的按钮自定义视图