通用 ios 应用 iPad 和 iPhone 架构

Posted

技术标签:

【中文标题】通用 ios 应用 iPad 和 iPhone 架构【英文标题】:universal ios app iPad and iPhone architecture 【发布时间】:2016-02-04 22:42:46 【问题描述】:

我正在创建一个通用的 ios 应用程序。 在大多数屏幕中,我对它们中的每一个都有不同的 UI。 大约有15个屏幕。 我来自 android 并试图为此找到最佳解决方案。

    在 iPhone 上我使用纵向模式。 在 iPad 上我使用横向模式。 我使用约束/自动布局。 有些视图有 nib,有些在代码中。 正因为如此,每个人的逻辑都有些不同。 iPad 有 2 个菜单,您可以从上到下和从左到右滑动。 iPhone 没有可拖动的菜单。 两者都对服务器使用相同的 Api 调用。

我看了一下堆栈溢出,得到了一些方法:

我应该使用 2 个不同的类和 2 个笔尖吗? 或者可能是 1 类有大量的 if else? 使用不同的目标?

其中之一是最好的方法吗?还有其他方法吗?

different targets

same class with if/else

IPAD::

iPhone::

【问题讨论】:

【参考方案1】:

当我需要设计一个通用应用程序时,我会查看我认为需要支持的界面并尝试:

    自动布局约束可以处理不同的布局吗?如果这么好,我只需要一个视图。 如果视图明显不同,我可以为视图控制器定义一个通用的 IBOutlet/Action 接口吗?如果是这样,我可以使用一个视图控制器(不包含条件分支)来支持在多个 nib 中定义的视图。 如果视图结构完全不同或呈现的视图控制器差异很大(例如拆分视图控制器),那么我可能需要多个视图控制器,每个视图控制器都有自己的视图/nib,但这些控制器应该尽可能薄并共享一组通用模型、数据源、网络服务和其他业务逻辑。

【讨论】:

考虑到 SwiftUI 的上述几点,今天有什么最新方法吗?

以上是关于通用 ios 应用 iPad 和 iPhone 架构的主要内容,如果未能解决你的问题,请参考以下文章

如何支持适用于 iPhone、iPad 和 iPad Mini 的 iOS 应用程序

对通用 OpenGL ES 应用程序(iPhone 和 iPad)的建议?

IOS(将通用更改为 ipad)我的错误我已经为 iphone 上传构建现在我们希望在新版本中这个应用程序仅适用于 ipad

Xcode 7.3 如何将我现有的 iPhone 应用程序转换为通用应用程序,以便在 iOS 中与 iPad 一起使用

iOS 单元测试通用应用程序

通用 iOS 9.1 应用程序不兼容