跨平台GUI在Windows/macOS/iPad上的实现方式

3
我正在进行一个项目,完全重写一个大型应用程序,使其更加现代化和跨平台兼容。它需要在Windows、OS X和iPad上运行,其中iPad版本是优先考虑的。我的当前计划是使用HTML/CSS/JS来制作所有的GUI界面,并使用Chrome嵌入式框架来渲染页面并处理交互性。这样,所有的UI都可以跨平台使用,并且我只需要编写特定于平台的代码来显示它。这也意味着,如果将来将其移植到Web上,大部分UI已经以Web兼容格式存在。应用程序本身的其余部分代码也应该大部分是跨平台的,只需使用纯C++即可。由于没有针对iPad的CEF,所以我正在考虑使用UIWebView类来实现同样的功能。我想知道您对在iPad上使用HTML作为GUI的看法。
我的主要关注点是:
- 性能 - 我不知道UIWebView在作为GUI时的性能特征。会有很多交互式对话框,甚至需要一些动画。我研究了如何从Javascript与Objective-C通信,最流行的方法(将文档位置设置为自定义URL,如MyApp://,并从字符串中提取消息)似乎会非常缓慢。 - 可用性 - iOS用户习惯了特定的交互标准(例如,非常流畅的过渡效果、可拖动的侧边栏、所有内容都快速而光滑)。我相信我可以在Windows/OS X上使用CEF实现这一点,但不确定iPad是否可以。
谢谢您的时间!
4个回答

1

我决定在桌面和iOS上使用HTML。制作3个单独的项目并不是很困难,而且使用HTML进行渲染可以解决大部分跨平台问题。感谢你们所有人的回答。


1
我猜你正在使用最新版本的XCode和C++的Mac(否则你将无法在Mac OS X或iOS上发布到App Store)。除此之外,你最好使用两个不同的工具包。我建议在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,则不同的桌面开发人员组将合并为单个桌面开发组。
如果只有少数人参与项目,则制作桌面和移动应用程序更加困难。

0

你可以试试商业产品 FireMonkey,该产品在某种程度上得到了 Embarcadero 的支持。它的亮点包括跨平台编译和调试 (!)、完全相似的行为在 Mac OS 和 Windows 上 (iOS 也可以,但通常需要不同的表单),完全矢量化的用户界面 (!!),意味着它们可以进行放大/缩小并且在 3D 中旋转,完整的 3D 支持 (!!!) 并带有内置的动画和效果库 - 即使它们不一定适合商业应用程序。它还配备了一个非常好的和真正快速的 RAD。

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


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 上运行。


Enyo看起来非常酷,谢谢提供链接。就HTML而言,它似乎很有前途。我不想使用像Qt这样沉重的东西,FLTK看起来很丑。 - phosphoer

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接