【问题标题】:How do I make my app display another screen for landscape left and landscape right, iPhone X iOS如何让我的应用程序显示另一个横向左侧和横向右侧的屏幕,iPhone X iOS
【发布时间】:2017-12-30 17:27:28
【问题描述】:

我想这是一个更基本的问题。我被这个应用程序困住了,我正在为 iPhone X 编写代码。我将它设置为在 Main.storyboard 文件上显示很多按钮。一切看起来都是我想要的样子,但问题是我不知道如何通过向左横向旋转和向右横向旋转来改变屏幕。屏幕看起来一样,但我想以不同的方式设置页面样式。

Xcode 9.1 iOS 11 斯威夫特 4.03

【问题讨论】:

标签: ios swift xcode


【解决方案1】:

如果您想要一个真正不同的横向布局(而不仅仅是一个自适应布局),您应该使用尺寸类: https://developer.apple.com/library/content/documentation/UserExperience/Conceptual/AutolayoutPG/Size-ClassSpecificLayout.html

这将使您能够为不同的方向制作完全不同的 UI。

Interface Builder 可让您根据当前的尺寸等级自定义布局的许多功能。然后布局会随着尺寸等级的变化而自动适应。

...

随着视图的大小等级发生变化(例如,当您旋转 iPhone 或在全屏和拆分视图之间切换 iPad 应用程序时),系统会自动将项目添加到视图层次结构中或从视图层次结构中移除它们。系统还会对视图布局的任何更改进行动画处理。

【讨论】:

  • 就像一个(现已删除)的答案 - OP 想了解横向 left 和横向 right。尺寸等级不这样做。
  • 我明白了。我假设他只是提到左右来掩盖他的基地。但我现在明白你是对的。
【解决方案2】:

如果您想要左右横向不同布局的唯一原因是避免屏幕顶部的“缺口”和底部的手势区域,那么您真正应该做的就是布置视图相对于“安全区”,正是出于这个原因而存在的。如果您的视图是相对于安全区域布局指南进行布局的,那么无论方向如何,它们都会自动调整以避开缺口和手势区域。

https://developer.apple.com/documentation/uikit/uiview/positioning_content_relative_to_the_safe_area

【讨论】:

    【解决方案3】:

    您可以为每个特定方向制作两个 xib 文件,然后使用用户 dfd 的建议,分别在以下代码中加载 xib:

    if UIDevice.current.orientation == UIDeviceOrientation.landscapeLeft {
        //Load xib for landscapeLeft
    } else if UIDevice.current.orientation == UIDeviceOrientation.landscapeRight
        //Load xib for landscapeRight
    {
    

    这将允许您以不同的方式设置方向的样式。
    祝你好运,
    阿纳夫


    来源:
    https://stackoverflow.com/a/38629833/8503080

    【讨论】:

    • 如果您担心缺口,我会推荐 Mark Bessey 的回答。使用安全区域来避免缺口是设计视图的最佳和正确方法。我的回答是,如果您想要针对不同方向的不同视图。希望对您有所帮助。
    猜你喜欢
    • 2014-11-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-07-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多