2015-06-29 44 views
0

我在纵向子视图(故事板场景):如何处理不同设备方向的不同视图?

enter image description here

,我想,当设备旋转到横向移动和调整这样的:

enter image description here

什么处理这个问题的最好(或最简单的)方法应该是? 我正在考虑以下选项:

  1. 创建不同的分离的xib文件(一个用于人像,另一个用于景观),并加载相应的一个?
  2. 当方向改变时,旋转+翻译+调整子视图的大小?
  3. 直接创建两个子视图(水平底部和垂直左侧)并根据方向隐藏相应的对象?

我需要此方案的帮助,我找不到适用于我的解决方案。此外,如果我错过了其他任何选项,我会很感激知道。

预先感谢

编辑:这是一个应用程序中定位iOS 7及以上。我没有使用尺寸类功能,只是自动布局。

编辑2:

  • 设置一个新的帧的子视图。
  • 这个选项与选项2有什么区别?

    +0

    的UIPresentationController类是专门为此设计为我明白它。但是,我不太熟悉它写出完整的答案。有一些方法可以用来响应尺寸级别的变化,这些变化在某些设备上会有。 苹果公司目前不鼓励苹果公司(我认为)基于任何尺寸的类来制作用户界面的改变,所以如果你想在手机上这种行为,这可能是不平凡的?但我不会肯定地说。 – Braains

    +0

    @Braains谢谢你的回复,我忘了提及我正在开发iOS 7+,而我只是使用自动布局,我没有利用大小类... – AppsDev

    +0

    我认为这有一个更简单的解决方案。您可以使用超级视图将视图绑定到左侧和底部。接下来,取IBOutlet视图的高度和宽度约束。设备旋转时更改该值。如果你愿意,你也可以用动画更新约束。如果你喜欢这个想法,请告诉我,如果你想知道更多关于它的信息。 – Tejvansh

    回答

    0

    选项(2)将是你最好的选择。根据方向存储两组约束并安装/卸载它们。 如果您正在使用大小班级,则可以在IB中完成此操作。 (1)过量,(3)不必要。

    在人像模式中,你有你的子视图以下限制:

    • 左水平空间的限制,右两侧
    • 的底侧
    • 高度约束的垂直空间的限制

    将设备旋转到横向方向后,您将更改约束条件,以便您最终得到以下约束条件瓦特:

    • 用于顶部垂直空间的限制和底侧
    • 甲水平空间约束用于左侧
    • 宽度约束
    +0

    也谢谢。轮换之后,约束如何受到影响? – AppsDev

    +1

    他们不受影响。每个视图的新位置将在旋转后根据相同的约束条件进行计算。如果您希望视图在方向更改后有不同的位置,则必须相应地更新您的约束。看到我更新的答案,以了解如何 –

    相关问题