首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >什么是适用于iOS和Mac的跨平台方法?

什么是适用于iOS和Mac的跨平台方法?
EN

Stack Overflow用户
提问于 2010-08-30 04:23:51
回答 2查看 1.1K关注 0票数 3

设备的跨平台框架(iPhone + Android)和桌面的跨平台框架(Mac + Win + Linux)似乎有很多答案。这是一个不同的问题,涉及合适的框架、方法、模板应用程序、教程,或者只是有用的提示,关于开发在设备操作系统和桌面操作系统之间跨平台移植的本机应用程序(不仅仅是web应用程序)。

我想写一个既能在我的iPhone (或iPad)上运行,又能编译成在Mac上本地运行(而不仅仅是在模拟器中运行)的应用程序。我愿意只使用两个平台通用的基本UI元素(只有一个窗口、通用按钮、文本字段等)。

用最少的#ifdef和其他特定平台的代码重写,在我的iPhone和我的MacBook上本地运行的两个应用程序,最好的方法是什么?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2010-08-30 09:10:38

使用标准的UI控件没有简单的方法可以做到这一点。AppKit和UIKit是完全不同的动物。即使是基本的UIView和NSView在结构和功能上也有很大的不同。在这个级别上,您将看不到任何可以跨平台的东西。

然而,有一些显示元素可以在Mac和iOS上使用,只需最少的更改。核心动画CALayers就是这样一个元素,因为它们在Mac和iOS上是相同的。这就是为什么我们选择使用它们作为Core Plot框架的基础,该框架使用几乎相同的代码库在Mac和iOS上显示图形。有一些特定于平台的东西需要调整(比如UIView应用于其支持层的倒置坐标系),但大多数代码都可以转换到这两个平台。

你提到过写一个游戏。如果您正在使用Mac进行此操作,则您编写的大部分渲染代码也可以在OpenGL上运行。您需要更改一些内容,但在大多数情况下,OpenGL ES是桌面OpenGL的一个子集。然而,对于一个简单的2-D游戏,我建议坚持使用Core Animation,除非你真的遇到了性能方面的障碍,因为你写的代码会少得多。

到目前为止,我提到的所有项目都在模型-视图-控制器设计模式的视图部分。您的控制器代码将是特定于应用程序的,但您可以使大部分代码与平台无关。如果你使用一个简单的模型,甚至是一个依赖于SQLite或核心数据的持久化模型,那么使用相同的代码在Mac和iOS上工作应该是微不足道的。

一个Mac应用程序和一个iOS应用程序(甚至在不同的iOS设备之间)将有一个非常不同的核心设计。你不能把一些东西从一个平台硬塞到另一个平台上。游戏可能比其他任何东西都更便于移植,但您仍然需要进行一些自定义工作,以反映每个计算设备的独特属性。

票数 3
EN

Stack Overflow用户

发布于 2014-02-01 12:15:09

我也在努力解决这个问题;我使用的是Unity3D,而免费许可证不允许原生OS X插件。

我刚刚花了一个小时浏览了一下http://rayvinly.com/how-to-build-a-truly-universal-framework-for-ios-and-mac-with-just-a-single-codebase/

雷做了一个超级演示,你可以下载他30页的电子书文档!他还提供了一个模板项目。

我想我可以使用这个设置来创建一个单一的绘图界面(所以,在两个平台上都是一个单一的窗口),我可以使用SpriteKit来绘制它。

然后包装鼠标/触摸输入以创建一个统一的输入。

至于现成的框架,http://chameleonproject.org/看起来很有趣。

http://kivy.org/#home看起来更有趣:多平台Python包装GLES2

也请参阅http://polycode.org/ http://qt-project.org/

你最终选择了什么?

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3596455

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档