3

夏天我正在做一个项目,涉及完全重写一个大型应用程序,使其更加现代和跨平台兼容。它需要在 Windows、OS X 和 iPad 上运行。iPad 版本是当务之急。最好是将来也可以很容易地转换为 Web 应用程序。

我目前的计划是在 HTML/CSS/JS 中完成所有 GUI,使用 Chrome 嵌入式框架来呈现页面并处理交互性。这样所有的 UI 都是跨平台的,我只需要编写特定于平台的代码来显示它。这也意味着如果/当我将它移植到网络时,大部分 UI 已经是网络兼容格式。应用程序代码本身的其余部分也应该主要是跨平台的,只是纯 C++。iPad 没有 CEF,所以我正在考虑使用 UIWebView 类来做同样的事情。我很好奇您对在 iPad 上使用 HTML 作为 GUI 有何看法。

我主要担心的是:

  • 性能 - 我不知道 UIWebView 的性能特征是什么,就将它用于 GUI 而言。会有很多交互式对话框,甚至需要一些动画。我对如何从 Javascript 与 Objective-C 进行通信进行了一些研究,最流行的方法(将文档位置设置为 MyApp:// 之类的自定义 URL,并从字符串中提取消息)似乎真的很慢.

  • 可用性——iOS 用户习惯于某种标准的交互性(例如,非常平滑的过渡、可拖动的侧边栏,一切都快速而优美)。我相信我可以使用 CEF 在 Windows/OS X 上完成此任务,但不确定 iPad。

谢谢你的时间!

4

4 回答 4

1

我假设您使用的是带有最新版本 XCode(否则您将无法在 Mac OS X 或 iOS 上发布到 App Store)和 C++ 的 Mac。除此之外,您最好的选择是使用两个不同的工具包。我推荐适用于 Windows 和 Mac OS X 的 WxWidgets(它为两个平台提供本机外观)和适用于 iPad 的标准 iOS 工具包。

为两个平台使用单个工具包的问题在于它们彼此之间的不兼容程度。可以将 HTML5/CSS3/Javascript 用于 gui,但您必须制作三个独立的项目(每个平台一个)。虽然,我知道有一个工具包可用于使用 HTML/CSS 制作桌面应用程序,但我认为它与移动设备不兼容。

如果您现在想知道公司如何为 iOS、Android、Windows、Mac OS X 甚至 Linux 开发应用程序,那么他们是否有几个专门针对其平台的开发人员。所以他们将是一组 Windows 开发人员,另一组 Mac OS X 开发人员,等等。有时,如果他们使用 WxWidgets 或 Qt 等跨平台工具包,则不同的桌面开发人员组会合并为一个桌面开发组。

如果只有几个人在做这个项目,那么制作桌面和移动应用程序就更难了。

于 2012-05-07T21:26:37.813 回答
1

我决定为桌面和 iOS 使用 HTML。制作 3 个独立的项目并没有那么困难,而使用 HTML 进行渲染解决了大部分跨平台问题。感谢您的所有回答。

于 2012-05-08T16:27:13.297 回答
0

您当然可以在 iPad 上使用 HTML5/CSS/JS GUI。甚至还有 GUI 框架可以帮助您解决这个问题。我认识的一个是Enyo。你会发现更多。

基于这些技术构建的 GUI 的好处在于,在许多情况下,您可以使用 Web 浏览器在桌面上进行开发。

要部署到 iOS 设备,您可以手动将 GUI 放入其中UIWebView,或者您可以使用phonegap,它会为您处理繁琐的工作,同时还允许您选择在 Android 和除 iOS 之外的其他一些移动平台上发布来自相同的来源。

对于桌面版本,您可能需要评估相同的 GUI 是否可以在嵌入式浏览器窗口中工作。不依赖手机/平板电脑硬件的 Enyo 应用程序在桌面网络浏览器中运行良好,但我怀疑用户可能会发现桌面使用的 GUI 很奇怪。如果您需要构建更传统的东西,那么如果您想要强大的功能和最佳的原生外观和感觉,我推荐Qt ;如果您想要简单,我推荐FLTK。这两个框架都运行在 Windows、OS X 和 Linux 上。

于 2012-05-08T05:09:13.100 回答
0

您可以尝试使用 Embarcadero 商业和支持(在某种程度上)的 FireMonkey。亮点是跨平台编译和调试(!),在 Mac OS 和 Windows 上完全相似的行为(iOS 工作,但通常需要不同的形式),完全矢量化(!!)用户界面意味着它们可以放大/缩小和还以 3D 旋转,完全 3D 支持 (!!!) 以及内置到库中的动画和效果 - 即使它们不一定适合商业应用程序。它由一个非常好的和非常快速的 RAD 补充。

缺点是社区相对较小,版本 2 仍存在一些缺陷和缺失的组件,例如文件夹选择对话框、托盘图标支持和其他杂项。您可能想在平台上搜索问题。您可以使用 C++ 或 Delphi Object Pascal 为 Firemonkey 编写代码。

于 2013-02-18T07:17:40.063 回答