【问题标题】:Why are my autolayout constraints conflicting?为什么我的自动布局约束有冲突?
【发布时间】:2017-11-03 19:36:19
【问题描述】:

我有一个应用程序在页面上使用滚动视图,该滚动视图中有许多图标。我不太了解自动布局,但我已将每个图标限制在视图的当前画布值(在测量并将每个图标放置在正确位置之后)。为什么仍然存在冲突(准确地说是 188 个)和明确的立场?

作为一个例子,如果上面的内容不清楚,我在滚动视图的左上角放置了一个图标。然后,我将该图标限制在视图中其当前画布值的顶部、底部、左侧和右侧。

【问题讨论】:

  • 我们需要看到约束才能提供帮助。我建议创建一个显示问题的简单示例,并使用此示例和报告的冲突更新问题。
  • 在使用自动布局移动到滚动视图之前,我建议您在没有滚动视图的情况下使用自动布局玩至少两天。因为。在 scrollView 中使用自动布局会让人感到困惑。

标签: ios xcode autolayout ios-autolayout


【解决方案1】:

这很难在不展示的情况下解释(如“现场演示”),但我会试一试: Scrollviews 的自动布局的工作方式可能与您想象的不同。您不能像这样简单地指定将其内容放置在与其边界相关的位置。毕竟,滚动视图的“画布”根据您滚动的内容确定其大小,而实际滚动视图的大小(我们称之为视口,或“画布上的窗口”)以不同的方式确定(例如通过将其限制在它周围的元素上)。

这与自动布局对其他视图的工作方式相反,因为它们通常受其父视图的大小限制(直到视图控制器的顶部视图和/或屏幕边界)。

您想要做的是在一个视图中添加所有项目。从已知的最小尺寸开始,将它们相互约束。最后,他们的容器的大小取决于其内容,即您的项目。这就是滚动视图的“画布”的大小,所以添加它并以某种方式限制它的位置(例如水平和垂直居中)。现在,滚动视图的实际大小和 它的 位置应该受到它周围的元素的约束。

这可能需要一些思考和培训,所以也许您会想在一个只有有限数量的视图的小型培训项目中进行测试。

【讨论】:

    【解决方案2】:
    1. 在屏幕上添加带有父视图约束的滚动视图
    2. 在滚动视图中添加内容
    3. 在添加的视图和父视图之间设置约束(非滚动视图)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-08-27
      • 2013-04-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-03-21
      • 1970-01-01
      相关资源
      最近更新 更多