【问题标题】:Can't add constraints in xib无法在 xib 中添加约束
【发布时间】:2020-04-01 02:55:05
【问题描述】:

我有一个 xib,但我不能添加约束。当我控制点击和拖动时,我无法执行任何操作,底部的按钮也无法执行任何操作。

我正在使用 xCode 11。

【问题讨论】:

    标签: ios xcode interface-builder xib


    【解决方案1】:

    检查您尝试为其添加约束的视图/按钮等的布局选项是否设置为自动。附上截图供参考,希望对您有所帮助。

    【讨论】:

      【解决方案2】:

      尝试使用嵌入按钮将视图嵌入到视图中。将新视图的 Layout 属性设置为 Autoresizing Mask。 现在您可以在新视图内的视图中使用自动布局。

      新视图应该有自动调整大小的掩码,并检查所有内容。

      【讨论】:

        【解决方案3】:

        对我来说,在 macOS 10.15.6、XCode 12.4 上,发生这种情况是因为我复制了一个 NSViewController 根视图并尝试将其修改为子视图。似乎它还复制了一些隐藏的“不能被约束”参数。

        所以,不要做我做过的事。

        【讨论】:

          【解决方案4】:

          我遇到了这个问题,我刚刚弄清楚是什么原因造成的。

          当我向视图控制器 XIB 添加新按钮时,我将按钮添加到 XIB 旁边的空白处,然后将按钮拖到左侧文档大纲中的视图下。如果您这样做,出于某种原因,它不允许您按住 Ctrl 键并拖动到视图以添加约束。

          如果您添加一个新按钮并立即将其拖到视图中,它应该允许您按住 Ctrl 键并拖动约束。

          【讨论】:

            【解决方案5】:

            还请注意 Size Inspector 中的 Layout 参数。 xib 中的每个组件都有 2 种值:Inferred (Constraints) 和 Autosizing Mask。

            如果选择 Inferred (Constraints),则视图将添加到父视图,而没有自动调整大小的约束。这意味着无论您为此视图设置什么自动调整大小,添加到父视图时都没有影响。其实就是把“translatesAutoresizingMaskIntoConstraints”属性设置为false是一样的。

            相比之下,如果选择了 Autosizing Mask,您在视图中定义的视图的自动调整大小参数将在添加到父视图时应用。如果您在 xib 中使用自动调整大小,则应该选择它。

            【讨论】:

              猜你喜欢
              • 2016-08-30
              • 2014-08-23
              • 2020-07-12
              • 1970-01-01
              • 2019-11-13
              • 1970-01-01
              • 2020-09-26
              • 2019-11-11
              相关资源
              最近更新 更多