问题标签 [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.
swiftui - 热门在 SwiftUI 中设置额外的安全区域插图
我正在尝试动态地向安全区域添加额外的填充。为了实现这一点,我编写了将 SwiftUI 视图包装到其中UIHostingController
并对其进行设置additionalSafeAreaInsets
的修饰符:
在涉及复杂导航之前,这非常有效:
在上面的示例中,更改选项卡会导致NavigationView
完全崩溃:
Broken navigation
这种行为可以解决吗?是否有另一种方法来实现扩展安全区域?谢谢。
swiftui - SwiftUI - 如何从 SwiftUI 访问 UIHostingController
我有 SwiftUI 页面,它正在从 UIKit 视图中导航。我想为此页面设置标题,我正在做的是
有没有办法可以在 SwiftUI 中访问托管控制器?
然后我可以编写类似的代码
self.hostingController?.title = "title"
swift - 全屏显示嵌入式 SwiftUI 子视图,UIHostingController
我在 Storyboard Swift App 上工作,想要在 Full-Screen 中呈现 SwiftUI 子视图。我使用 嵌入了 SwiftUI 视图UIHostingController
,如下所示:
这是我的 SwiftUIContentView()
子视图:
有更好的方法吗?如您所见,我使用一个空文本字段来添加.fullScreenCover:/
谢谢你的帮助!!
ios - 从 UIHostingViewController 呈现 UIViewController
我开始从 to 重建我的应用Swift
程序SwiftUI
。
我有一个UIViewController
使用UIPresentationController
并具有我想按原样使用的自定义拖动手势(现在)。
我试图弄清楚我是否能够从我的SwiftUI
视图中呈现这个。
以下是我导航到 SwiftUI 视图的方式:
呈现我的控制器的方法在我的 DataStore 中。
这是我正在尝试的:
我有一个Button
当点击时会调用displayDetailController
但没有任何反应。
目标是我的 DetailViewController,我可以看到我的数据并使用拖动手势。
ios - iOS 14:在 SwiftUI @main 中设置应用程序根视图控制器后,场景生命周期事件未命中
我的测试代码:
@Asperi's answer here和上面的代码似乎有效,但
除了最初启动应用程序的阶段外,场景生命周期.onChange(of:
似乎没有受到影响。不知道我做错了什么,请对此提供任何帮助。active
非常感谢 :)
ios - 从 SwiftUI 推送到 UIViewController
我的应用程序是UIKit
&的混合体SwiftUI
。我有一个用例,用户可能需要Button
从 a 中点击 aSwiftUI.View
但推送到 aUIViewController
或 another UIHostingController
。
我的项目使用Storyboard
.
我正在使用UINavigationController
& UITabBarController
。
我正在研究两种情况。
1.) 从我在主屏幕上首次启动时,我可以点击一个按钮,在它的操作中我有:
这按预期工作。
2.) 我点击另一个选项卡,它默认为我的SwiftUI
RootView,它托管在UIHostingController
我在我的Storyboard
. 在这里,如果我点击一个按钮来触发推送,它不会推送。我只看到View
我正在更新。
我也在使用自定义UINavigationController
. 从我Storyboard
的角度来看,选项卡关系转到自定义UINavigationController
,然后它的根是适当的UIViewController
。在一种情况下,虽然它是我的自定义,所以我最初可以从选项卡选择UIHostingController
中加载一个视图。SwiftUI
这是我尝试处理从 SwiftUI 视图推送到视图控制器的操作:
怎么了:
- 我确实看到数据发生了变化,但它们都在我已经使用的同一个视图上。
- 我需要推送到新的
UIHostingController
.
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 动画,请在另一个浏览器选项卡中打开)
这是后面的代码:
ios - SwiftUI 视图混合了 UIViewController 的视图
我有一个 UIViewController 中包含 MetalView 的 iOS 应用程序,所有设置都在故事板中。
现在我想在金属视图上混合另一个 SwiftUI 视图,它是透明的。所以只有 SwiftUI 视图的 GUI 元素对用户可见,背景是我的 MetalView。
我使用以下代码执行此操作:
基本上上面的代码确实有效。但是,SwiftUI 视图与 MetalView 的确切边界无关,尽管我的约束要求这样做。问题似乎是 UIHostingController 遵守安全区域插图,尤其是在底部和顶部,SwiftUI 视图始终是圆形的并且有点小。
我已经尝试了安全区域插入设置并尝试了几种演示样式,但没有任何帮助。
有人知道我如何将 SwiftUI 边框与 UIView 边框联系起来吗?
在您看到的橙色图像上,设备背景。最重要的是,我的 MetalView 正在渲染键盘图像。最重要的是,我的 SwiftUI 视图正在渲染:
由于我对 SwitUI 视图的约束与 MetalView 相关联,我希望 black.opacity(0.5) 覆盖整个 MetalView,但正如您所见,它在底部留下了一小部分未被覆盖。这是为什么 ?
ios - 在 iPad 上呈现弹出框时未禁用 SwiftUI 视图交互(iOS 14+)
我们正在使用UIHostingController
s 在我们的 UIKit 应用程序中嵌入 SwiftUI 视图。
由于ActionSheet
SwiftUI 中的警报在 iOS 13.4 以下 iPad 上仍会崩溃,因此我们改为UIAlertController([...], preferredStyle: .actionSheet)
使用托管视图控制器呈现 a。
在 iOS 13 中,一旦在 iPad 上显示弹出框警报,与弹出框下方的视图的所有交互都会被阻止。但是,在使用 iOS 14+ 设备进行测试时,我们注意到虽然弹出框正在呈现,但用户仍然可以与它们下方的视图进行完全交互。
这仅适用于 SwiftUI 视图。在我们有一些 UIKit 视图和嵌入式 SwiftUI 视图的视图控制器中,点击底层 UIKit 视图只会关闭弹出框,正如预期的那样。但是,SwiftUI 视图对交互的反应就像没有呈现任何内容一样。
我们现在通过自定义委托禁用交互:
这当然使用起来有些危险。我们是否缺少一个可以恢复所需行为的选项,就像在 iOS 13 中一样?