问题标签 [uihostingcontroller]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
426 浏览

swiftui - 热门在 SwiftUI 中设置额外的安全区域插图

我正在尝试动态地向安全区域添加额外的填充。为了实现这一点,我编写了将 SwiftUI 视图包装到其中UIHostingController并对其进行设置additionalSafeAreaInsets的修饰符:

在涉及复杂导航之前,这非常有效:

在上面的示例中,更改选项卡会导致NavigationView完全崩溃: Broken navigation

这种行为可以解决吗?是否有另一种方法来实现扩展安全区域?谢谢。

0 投票
2 回答
949 浏览

swiftui - SwiftUI - 如何从 SwiftUI 访问 UIHostingController

我有 SwiftUI 页面,它正在从 UIKit 视图中导航。我想为此页面设置标题,我正在做的是

有没有办法可以在 SwiftUI 中访问托管控制器?

然后我可以编写类似的代码 self.hostingController?.title = "title"

0 投票
0 回答
255 浏览

swift - 全屏显示嵌入式 SwiftUI 子视图,UIHostingController

我在 Storyboard Swift App 上工作,想要在 Full-Screen 中呈现 SwiftUI 子视图。我使用 嵌入了 SwiftUI 视图UIHostingController,如下所示:

这是我的 SwiftUIContentView()子视图:

有更好的方法吗?如您所见,我使用一个空文本字段来添加.fullScreenCover:/

谢谢你的帮助!!

0 投票
1 回答
81 浏览

ios - 从 UIHostingViewController 呈现 UIViewController

我开始从 to 重建我的应用Swift程序SwiftUI

我有一个UIViewController使用UIPresentationController并具有我想按原样使用的自定义拖动手势(现在)。

我试图弄清楚我是否能够从我的SwiftUI视图中呈现这个。

以下是我导航到 SwiftUI 视图的方式:

呈现我的控制器的方法在我的 DataStore 中。

这是我正在尝试的:

我有一个Button当点击时会调用displayDetailController但没有任何反应。

目标是我的 DetailViewController,我可以看到我的数据并使用拖动手势。

0 投票
1 回答
118 浏览

ios - iOS 14:在 SwiftUI @main 中设置应用程序根视图控制器后,场景生命周期事件未命中

我的测试代码:

@Asperi's answer here和上面的代码似乎有效,但 除了最初启动应用程序的阶段外,场景生命周期.onChange(of:似乎没有受到影响。不知道我做错了什么,请对此提供任何帮助。active

非常感谢 :)

0 投票
1 回答
663 浏览

ios - 从 SwiftUI 推送到 UIViewController

我的应用程序是UIKit&的混合体SwiftUI。我有一个用例,用户可能需要Button从 a 中点击 aSwiftUI.View但推送到 aUIViewController或 another UIHostingController

我的项目使用Storyboard.

我正在使用UINavigationController& UITabBarController

我正在研究两种情况。

1.) 从我在主屏幕上首次启动时,我可以点击一个按钮,在它的操作中我有:

这按预期工作。

2.) 我点击另一个选项卡,它默认为我的SwiftUIRootView,它托管在UIHostingController我在我的Storyboard. 在这里,如果我点击一个按钮来触发推送,它不会推送。我只看到View我正在更新。

我也在使用自定义UINavigationController. 从我Storyboard的角度来看,选项卡关系转到自定义UINavigationController,然后它的根是适当的UIViewController。在一种情况下,虽然它是我的自定义,所以我最初可以从选项卡选择UIHostingController中加载一个视图。SwiftUI

这是我尝试处理从 SwiftUI 视图推送到视图控制器的操作:

怎么了:

  • 我确实看到数据发生了变化,但它们都在我已经使用的同一个视图上。
  • 我需要推送到新的UIHostingController.
0 投票
2 回答
1022 浏览

swiftui - 在 iOS 15 上,UIHostingController 为其托管的 SwiftUI 视图 (_UIHostingView) 添加了一些奇怪的额外填充

在 iOS 15 上,它UIHostingController正在为其托管的 SwiftUI 视图 ( _UIHostingView) 添加一些奇怪的额外填充。

请参见下面的屏幕截图(蓝色 = 额外空间,红色 = 实际视图):

在此处输入图像描述

有谁知道为什么会这样?

我已经报告了这个错误,Apple 人:FB9641883

PD:我有一个工作项目来重现我附加到反馈助手问题的问题。如果有人要,我也可以上传。

0 投票
2 回答
196 浏览

ios - SwiftUI UIHostingController 导航标题动画坏了

当我使用 UIHostingController 将新的 SwiftUI.View 推送到现有 UIKit UIViewController 的导航堆栈时,导航栏中的标题动画被破坏。我在 Xcode 12.0 中对一个纯新项目进行了测试。

仔细观察标题“UIHostingController”。您可以看到动画看起来与普通推送动画有何不同,它只是“出现”无中生有,看起来很破碎。第二个动画已经从 SwiftUI.NavigationLink 发生,看起来不错。

如果您想尝试一下,这里是示例项目的链接: https ://www.dropbox.com/s/mjkuzhpsb6yvlir/HostingControllerTest.zip?dl=0

查看此 GIF 图片:(如果您没有查看 GIF 动画,请在另一个浏览器选项卡中打开)

在此处输入图像描述

这是后面的代码:

0 投票
1 回答
55 浏览

ios - SwiftUI 视图混合了 UIViewController 的视图

我有一个 UIViewController 中包含 MetalView 的 iOS 应用程序,所有设置都在故事板中。

现在我想在金属视图上混合另一个 SwiftUI 视图,它是透明的。所以只有 SwiftUI 视图的 GUI 元素对用户可见,背景是我的 MetalView。

我使用以下代码执行此操作:

基本上上面的代码确实有效。但是,SwiftUI 视图与 MetalView 的确切边界无关,尽管我的约束要求这样做。问题似乎是 UIHostingController 遵守安全区域插图,尤其是在底部和顶部,SwiftUI 视图始终是圆形的并且有点小。

我已经尝试了安全区域插入设置并尝试了几种演示样式,但没有任何帮助。

有人知道我如何将 SwiftUI 边框与 UIView 边框联系起来吗?

2021 年 10 月 18 日更新: 在此处输入图像描述

在您看到的橙色图像上,设备背景。最重要的是,我的 MetalView 正在渲染键盘图像。最重要的是,我的 SwiftUI 视图正在渲染:

由于我对 SwitUI 视图的约束与 MetalView 相关联,我希望 black.opacity(0.5) 覆盖整个 MetalView,但正如您所见,它在底部留下了一小部分未被覆盖。这是为什么 ?

0 投票
0 回答
35 浏览

ios - 在 iPad 上呈现弹出框时未禁用 SwiftUI 视图交互(iOS 14+)

我们正在使用UIHostingControllers 在我们的 UIKit 应用程序中嵌入 SwiftUI 视图。

由于ActionSheetSwiftUI 中的警报在 iOS 13.4 以下 iPad 上仍会崩溃,因此我们改为UIAlertController([...], preferredStyle: .actionSheet)使用托管视图控制器呈现 a。

在 iOS 13 中,一旦在 iPad 上显示弹出框警报,与弹出框下方的视图的所有交互都会被阻止。但是,在使用 iOS 14+ 设备进行测试时,我们注意到虽然弹出框正在呈现,但用户仍然可以与它们下方的视图进行完全交互。

这仅适用于 SwiftUI 视图。在我们有一些 UIKit 视图和嵌入式 SwiftUI 视图的视图控制器中,点击底层 UIKit 视图只会关闭弹出框,正如预期的那样。但是,SwiftUI 视图对交互的反应就像没有呈现任何内容一样。

我们现在通过自定义委托禁用交互:

这当然使用起来有些危险。我们是否缺少一个可以恢复所需行为的选项,就像在 iOS 13 中一样?