【问题标题】:iOS AutoLayout - Button moves when app is launchediOS AutoLayout - 应用程序启动时按钮移动
【发布时间】:2016-03-08 04:22:37
【问题描述】:

我将尝试描述这个问题——以前从未见过这种行为。

当应用在模拟器或实际设备上启动时,我有一个从应用屏幕右侧移动到中间的按钮。我希望它始终位于中间(它移动到的位置)。

基本上,它从父视图上的一个位置移动到另一个位置(我希望它始终处于约束定义的位置)

我该如何做到这一点?

以下是显示行为和约束的图片:

Button is on the right, higher up; then fades out

Button fades in to the bottom, centered position (correct per constraints listed below)

按钮约束:

  1. Button.centerX = centerX(将按钮居中到容器的水平中心)

  2. 底部布局 Guilde.top = Button.bottom + 112(无论屏幕大小或方向如何,都将按钮锚定到应用底部)。

【问题讨论】:

  • 如果您可以将示例项目发布到 github,我们将更容易为您提供帮助。
  • 您能否提供您在故事板上给出的约束的屏幕截图?它将帮助我们为您提供帮助。
  • @MGP 我试图截取约束,但我没有足够的分数来发布超过 2 个。我在文本中完全按照它们在 XCode 中出现的方式描述了它们。
  • 您是否使用了尺寸等级?并且请确保按钮是否有任何其他约束。
  • @robmayoff,这是一个新的独立项目的链接,我尝试重新创建该问题。在这个测试项目中,按钮在突然淡入正确位置之前没有显示在屏幕上。另一个项目中的实际按钮出现在上方和右侧,然后在正确的较低+居中位置淡出并淡入。 bitbucket.org/innovative_software/ios-test-button

标签: ios autolayout


【解决方案1】:

只需添加两个约束 BottomSpace 和 CentreX,如下所示。 (如果需要明确的高度和宽度)

【讨论】:

  • 我已经有这些相同的限制(请参阅我的问题的文本),除了底部空间是 100 而不是 50。(我选择了任意数字)。
【解决方案2】:

1.还提供button.left。 或者 2.使用约束显示在图像中。

【讨论】:

  • 不需要给 button.left 约束。给定的约束足以定位按钮。
  • 但是在图片中你可以看到按钮向右移动。
  • 如果你给按钮一个左约束,那么它将在不同的设备上放置不同的位置(根据设备宽度)。它不会正确定位在中间。
  • 使用尺寸等级。只需在容器中水平应用两个约束,在容器中垂直应用两个约束。在我编辑的答案中发布快照
  • @DhruvKhatri,我有容器中的水平约束,但我不希望它在容器中垂直居中,因为我在上面有不同的视图。
【解决方案3】:

好的,我解决了这个问题。不知何故,闪屏故事板得到了我在主故事板上拥有的按钮和其他视图的副本。一旦我从启动画面故事板上删除了按钮,按钮问题就停止了。

显然第一个屏幕截图是启动屏幕,第二个屏幕截图是实际应用程序(主情节提要)。

感谢大家的帮助!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-03-07
    • 2017-06-12
    • 2018-05-31
    • 1970-01-01
    • 2014-09-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多