Windows / osx / ipad上的跨平台GUI

时间:2012-05-07 20:03:40

标签: c++ html ios user-interface cross-platform

我在整个夏天都在做一个项目,涉及完全重写大型应用程序,使其更加现代化和跨平台兼容。它需要在Windows,OS X和iPad上运行。 iPad构建是一个优先事项。最好在将来转换为Web应用程序也相当容易。

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

我主要担心的是:

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

  • 可用性 - iOS用户习惯于某种交互标准(例如,真正平滑的过渡,可拖动的侧边栏,一切都快速和完善)。我相信我可以使用CEF在Windows / OS X上实现这一点,但不确定iPad。

谢谢你的时间!

4 个答案:

答案 0 :(得分:1)

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

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

如果您现在想知道公司如何为iOS,Android,Windows,Mac OS X甚至Linux制作应用程序,他们是否有一些特定于其平台的开发人员。因此,他们将是一组Windows开发人员,另一组Mac OS X开发人员,等等。有时,如果他们使用像WxWidgets或Qt这样的跨平台工具包,则会将不同的桌面开发人员组合并到一个桌面开发组中。

制作桌面&如果只有少数人参与该项目,那么移动应用程序就更难了。

答案 1 :(得分:1)

我决定使用HTML for desktop和iOS。制作3个单独的项目并不是那么困难,使用HTML进行渲染可以解决大多数跨平台问题。谢谢你的所有答案。

答案 2 :(得分:0)

您当然可以在iPad上使用HTML5 / CSS / JS GUI。甚至还有GUI框架可以帮助您实现这一目标。我所知道的是Enyo。你会发现更多。

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

对于部署到iOS设备,您可以手动将GUI放在UIWebView内,或者可以使用phonegap来处理脏工作,同时也为您提供选项从相同的来源在Android和其他一些除iOS以外的移动平台上发布。

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

答案 3 :(得分:0)

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

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