ios - 健全性检查 : Architecture for designing views that work in both iOS and OSX?

标签 ios objective-c macos sanity-check

我正在构建一个应用程序,我想在 iOS 和 OSX 中重用 99% 的代码。只是要求进行健全性检查。

(编辑)关于我的项目的更多信息可能会影响一些响应:我的应用程序涉及一个可自定义的演示文稿,主要用于 iOS 设备。 OSX 组件实际上是可定制呈现的设计器 - 一种指定要在选定的 iOS 设备上呈现的内容的方法。也就是说,OSX 应用程序将是一个完全正常的 OSX 应用程序,它允许用户为 iOS 设备选择、配置和定位一些元素 - 并显示该演示文稿的预览。当然,我希望预览尽可能地类似于 iOS 渲染(而不实际调用 iOS 模拟器,我不希望它在所有 OSX 设备上都可用)。因此,我将演示文稿设计为一个 View ,应该在 OSX 和 iOS 上尽可能以几乎相同的方式呈现。

为此,我从 iOS 开始使用一些简单的 View 绘图内容,现在我正在重新配置代码,以便可以将其移植到 OSX。到目前为止,我的策略是将所有对 UIView/UIWindow/UIFont/UIColor 等的引用替换为 _View/_Window/_Font/_Color 等。对于 iOS 版本,我将包含一个名为 Wrapper.h 的文件,如下所示:

#define _Device UIDevice
#define _Application UIApplication
#define _ApplicationMain UIApplicationMain
#define _ApplicationDelegate UIApplicationDelegate
#define _Responder UIResponder
#define _Window UIWindow

...使用基于 NS 的 OSX 定义(NSWindows 等)我知道一些细节会改变(比如 View 中的 Y 坐标),但我可以处理。

我认为我不能像这样映射的唯一组件是手势识别器,因为 OSX 没有等效组件。我打算让它们成为在 iOS 包装器中实现的通用调用,并在 OSX 包装器中 stub ,因为我真的不需要 OSX 中的点击事件。

好主意?馊主意?有没有更好的方法来解决这个问题?谢谢...

最佳答案

My strategy so far is to replace all references to UIView / UIWindow / UIFont / UIColor etc. with _View / _Window / _Font / _Color, etc.



UIKit 不仅仅是 AppKit,所有出现的“NS”都更改为“UI”。尽管有很强的相似之处,但框架的工作方式和用户期望使用每个框架编写的软件的方式也存在重要差异。是否可以编写一个同时使用 UIKit 和 AppKit 实现的框架?毫无疑问,但您最终会遇到一些阻碍您充分利用任一平台的东西。

Good idea? Bad idea? Is there a better way to tackle this?



海事组织,坏主意。如果您在设计数据模型方面做得很好,您应该能够在 Mac 和 iOS 实现之间共享它而无需更改。然后,与其花大量时间试图弄清楚如何编写一个单一的用户界面并想出一些双方都可以妥协的东西,不如把精力放在创建在两个平台上都引人注目的独立用户界面上。

关于ios - 健全性检查 : Architecture for designing views that work in both iOS and OSX?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14532300/

相关文章:

iphone - 将所有日历日期插入到 uitableview 中。

ios - float INFINITY 可以被 NSCoder 归档,但不能被 dearchived

ios - UICollectionView 显示 2 个项目而不是 3 个

iphone - Xcode:调试意外的 iOS 应用程序崩溃

objective-c - 修改 NSTextStorage 属性导致 ScrollView 跳转

c - 学校编程类问题(Visual Studio)

python - 如何在 OSx 和 virtualenv 中使用 Python Matplotlib?

ios - 更改 SCNMorphers 权重使多边形变平(iOS 11 测试版)

ios - 为什么我的 UIView 加载不出来?

ios - 如何为 2 个 UIView 使用一个 IB Outlet