当前位置: 首页 > 面试题库 >

在现有的UIKit应用程序中包含SwiftUI视图

尚河
2023-03-14
问题内容

是否可以通过SwiftUI与现有UIKit应用程序并排构建视图?

我有一个用Objective-C编写的现有应用程序。我已经开始迁移到Swift5。我想知道是否可以将SwiftUI与现有的UIKit .xib视图一起使用。

也就是说,我希望在同一应用程序中使用SwiftUI构建一些视图,并使用UIKit构建一些其他视图。当然不要混合两者。

SomeObjCSwiftProject/
    SwiftUIViewController.swift
    SwiftUIView.xib
    UIKitViewController.swift
    UIKitView.xib

彼此一起工作


问题答案:

编辑05/06/19:添加了@Departamento B在其答案中建议的有关UIHostingController的信息。 学分归他所有!

在UIKit中使用SwiftUI

可以通过将a封装成这样,SwiftUI在现有UIKit环境中使用组件:SwiftUI View``UIHostingController

let swiftUIView = SomeSwiftUIView() // swiftUIView is View
let viewCtrl = UIHostingController(rootView: swiftUIView)

也可以UIHostingController根据自己的需要进行覆盖和自定义,例如通过preferredStatusBarStyle手动设置(如果无法正常使用)SwiftUI

UIHostingController记录在这里。

在SwiftUI中使用UIKit

如果UIKitSwiftUI环境中使用现有视图,则可以使用该UIViewRepresentable协议!它已在此处记录,可以在此 Apple官方教程中实际使用。



 类似资料:
  • 我已经和这件事斗争了一天多,在SO和其他地方读了很多帖子,但我仍然有问题。 我需要在一个自包含的JavaFX应用程序包中包含我的应用程序图标。我使用的是JDK1.8.0_45及其包含的JavaFX包。我正在使用Maven构建.exe,除了我不能包含我的图标外,它都运行得很好。 下面是我的pom.xml: 使图标出现在标题栏中的是javapackager部署步骤的参数。这一行告诉inno安装程序使用

  • 我到处都找遍了,但找不到任何答案。 请原谅我。 我使用WebView在Android应用程序上成功地实现了一个WebRTC项目(该应用程序使用我托管的信令服务器流式传输视频)。 问题是,当我使用(不那么)旧的Web浏览器在另一部Android手机上测试该应用程序时,视频无法流式传输,因为webview不支持WebRTC。 我的Webview版本是: WebView版本(22209):UA:Mozi

  • 按照这里和这里的指示。我使用的是JDK7U9和NetBeans 7.2.1。我所做的是创建相对于我的项目根文件夹的整个路径(C:\users\administrator\desktop\icotest\package\windows\icotest.ico)。我同时尝试了48x48和256x256的大小。下面是我的项目Icotest的树状结构概述: 这就是build.xml的样子:

  • 我是Java开发的新手,这里有一个问题:我生成了web应用程序 ,然后我添加了文件夹和简单的文件。通过命令在my localhost:8080/manager中,我可以看到我的web应用程序,但是我如何在其中添加我的jar文件呢?

  • 问题内容: 嗨,我是angularjs的新手。我想向我的angularjs应用添加一个tripadvisor小部件。小部件代码是这样的: 这是我的问题:它没有从我的angularjs应用程序的底部加载脚本。 问题答案: 因此,不幸的是,基于大量搜索,没有任何方法可以使用纯角度进行此操作。在脚本标签上使用“ ng-include”,基于模板的指令甚至“ ng- src”都可以下载脚本,但默认情况下它

  • 我试图找出正确的方法,有条件地包括一个视图与swiftui。我不能直接在视图中使用,必须使用堆栈视图才能做到这一点。 这是可行的,但似乎会有更干净的方法。