【问题标题】:Cross platform GUI on windows/osx/ipadwindows/osx/ipad 上的跨平台 GUI
【发布时间】:2023-03-12 09:46:01
【问题描述】:

我在夏天做的一个项目涉及完全重写一个大型应用程序,使其更加现代和跨平台兼容。它需要在 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。

感谢您的宝贵时间!

【问题讨论】:

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


    【解决方案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 等跨平台工具包,则不同的桌面开发人员组会合并为一个桌面开发组。

    如果只有少数人参与该项目,则制作桌面和移动应用程序会更难。

    【讨论】:

      【解决方案2】:

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

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

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

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

      【讨论】:

      • Enyo 看起来很酷,感谢您的链接。就 HTML 而言,看起来很有希望。我不想使用像 Qt 这样沉重的东西,而且 FLTK 看起来很丑。
      【解决方案3】:

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

      【讨论】:

        【解决方案4】:

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

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

        【讨论】:

          猜你喜欢
          • 2020-03-17
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2012-11-03
          • 2011-12-08
          相关资源
          最近更新 更多