【问题标题】:Hide the Home Indicator in Swift 2.0在 Swift 2.0 中隐藏 Home 指示器
【发布时间】:2020-11-01 13:46:01
【问题描述】:

我希望隐藏 Home Indicator,虽然这在 Swift 中很简单,但在 SwiftUI 中似乎并不容易。

我试图用这个:

How to hide the home indicator with SwiftUI?

但是随着 SceneDelegate 的移除,我太不懂如何为新的应用协议正确翻译它了。

有人有什么想法吗?

【问题讨论】:

标签: ios swift swiftui


【解决方案1】:

这是一种可能的方法,可以将默认的 WindowGroup 窗口的主机控制器替换为任何自定义的主机控制器(在这种情况下,没有主页指示器)。

帮助程序扩展取自之前在https://stackoverflow.com/a/63276688/12299030 中提供的解决方案。

使用 Xcode 12 / iOS 14 测试

@main
struct MyApp: App {
    @UIApplicationDelegateAdaptor(MyAppDelegate.self) var appDelegate

    var body: some Scene {
        WindowGroup {
            Text("")  // << temporary placeholder
                .withHostingWindow { window in
                    let contentView = ContentView().environmentObject(SomeObservableObject())
                    window?.rootViewController = 
                         HideHomeIndicatorController(rootView: contentView)
                }
        }
    }
}

主机控制器的简化变体以隐藏主页指示器

class HideHomeIndicatorController<Content:View>: UIHostingController<Content> {
    override var prefersHomeIndicatorAutoHidden: Bool {
        true
    }
}

【讨论】:

  • 看起来这是在做类似的事情:stackoverflow.com/a/64623130/14348570 我遇到了同样的问题。我完全是绿色的,但似乎在这两种情况下它都在替换 ContentView()?我有几个 .environmentObject() 在 @main 应用程序中的 WindowGroup 下初始化,我认为因此被跳过? (对不起,如果这不是正在发生的事情,但希望是一般要点。)
  • 阅读我对那篇关于陷阱的帖子的评论。这个解决方案是不同的——它只替换创建窗口中的根视图控制器。请参阅在这种情况下如何/在何处注入环境对象的更新。
  • 好的,我知道它适用于所有视图,有没有办法将其限制为仅在横向时影响?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多