【问题标题】:iOS 7 - Autolayout - How to change location of views when rotatingiOS 7 - 自动布局 - 如何在旋转时更改视图的位置
【发布时间】:2014-06-24 18:48:18
【问题描述】:

在这种情况下,我对使用自动布局处理 UI 旋转有点困惑。这些按钮不会改变大小或与边缘的距离,而是它们相对于彼此的位置。

如何让这些视图旋转和布局,如图所示?此外,纵向视图为 300 x 300。但是,当旋转为横向时,必须将其大小调整为 300 x 290 以适应状态栏下方。

我真的很想知道执行此操作的最佳方法,以及执行此操作的不同方法。我已经看到了一些可能的方法,例如在设备旋转时以编程方式创建新约束,以及根据设备旋转方向加载两个单独的 NIB。

感谢您的帮助!

【问题讨论】:

    标签: ios objective-c constraints autolayout uiinterfaceorientation


    【解决方案1】:

    好的,有几种方法。

    第一种方法:巧妙地使用自动布局

    所以您知道正方形的宽度以及它会粘在左侧和顶部。所以设置你的自动布局,它设置左边和顶部的偏移量和宽度和高度。按钮从底部固定 y 像素,从右侧固定 x 像素,并且具有固定的宽度和高度。这些约束总是可以得到满足的。

    这适用于 iPad 或 iPhone 等单一习语。

    要获得 290 而不是 300,您还需要在底部设置一个偏移量,即 > 10,优先级为 1000,而 = 250 (或任何你喜欢的)再次具有 1000 的优先级。我应该在一个真实的故事板中进行测试以正确地测试它,这不是在没有警告或问题的情况下设置的最简单的事情。

    我最终设置了很多带有优先级的软尺寸。例如,290 像素高度的优先级仅为 250。

    第二种方法:灵活的尺寸布局

    下一个方法是针对已经在 Xcode 6 中的新的、无限大小的惯用语。显然这是未来,我建议您的应用程序适应它。你必须告诉我更多关于你的应用程序以及你希望它如何扩展的信息,因为不再有真正的大小概念,只是知道最宽和最窄的部分在哪里。

    【讨论】:

    • 感谢您的洞察力。关于如何将按钮放到正确位置的任何想法?
    • 这将是相同的方法,只是反过来。我现在正在工作,如果你愿意,我可以在几个小时内完成。基本思想是您设置从底部和右侧的偏移量,如果您想从顶部更正,您可以为此添加另一个约束。所以> = 150px,顶部偏移为prio 1000,= 150px,底部为prio 750。将按钮对齐并将它们链接到屏幕的右边缘。设置宽度和高度。如果您遇到问题,请告诉我!
    • 谢谢,我去看看。我今天没有时间,但我会尽快回来!
    • 我确实让视图正常工作,我明白你对按钮的意思
    • 我用它做了一个项目,基本上是强迫自己一直使用它。最重要的是,您不应在任何时候看到任何警告,并且您需要设置比最初预期更多的约束。例如,您会看到我对高度使用了三个约束。我也有一本专门的电子书,但我必须承认我只是把它擦了一遍。此外,有些东西仍然只能从代码或用户定义的运行时变量中获得。你可以做一些很酷的事情,比如让这个视图的宽度是另一个视图宽度的两倍,这样可以很好地缩放嵌套视图
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-11-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多