【问题标题】:Alternate layouts for portait and landscape in iOS in Xcode 10.xXcode 10.x 中 iOS 中纵向和横向的替代布局
【发布时间】:2019-06-12 12:56:41
【问题描述】:

我需要在我的 iOS 应用中为纵向和横向屏幕设置两种完全不同的布局。例如在 iOS 的计算器应用程序中: 纵向屏幕: 横向屏幕: 这个Alternative iOS layouts for portrait and landscape storyboard 不起作用,因为我在 XCode 10.X 中找不到该功能。

【问题讨论】:

  • 您可以使用 Traits 和 Size Classes 创建。参考:techotopia.com/index.php/…
  • Ashish Rana,使用 Traits 和 Size Classes 涉及到约束,还有其他简单的方法吗?
  • 使用您可以管理的堆栈视图。

标签: ios swift landscape-portrait


【解决方案1】:

我能想到的唯一方法就是在 UIViewController.viewDidLayoutSubviews() 或 UIView.layoutSubviews() 中放置一段代码。代码可能如下所示:

if frame.size.width > frame.size.heigh {
   // adjust for landscape
} else {
   // adjust for portrait
}
layoutIfNeeded()

请注意,如果您尝试在 viewDidLoad() 中执行此操作,这将不起作用,因为此时可能未定义宽度和高度。此外,在 UIViewController 中它是 'view.frame.size.width' 和 view.layoutIfNeeded()

我在我的应用程序中做了类似的调整 iPhone SE 的 UI,它工作正常。

“调整”可以像更改某些约束一样简单,也可以像删除某些视图和/或添加其他视图一样复杂。

此外,这与“特征”不同。我可能会建议在走这条路之前先探索一下特质。

【讨论】:

    猜你喜欢
    • 2014-11-15
    • 2013-09-06
    • 1970-01-01
    • 1970-01-01
    • 2017-11-28
    • 1970-01-01
    • 1970-01-01
    • 2013-10-23
    • 1970-01-01
    相关资源
    最近更新 更多