Полноэкранный режим в watchOS с SwiftUI

#ios #swift #swiftui #watchos

#watchkit #swiftui #watchos-6

Вопрос:

Я не хочу отображать SwiftUI View в полноэкранном watchOS режиме (без кнопки отмены / возврата или часов)

Я попытался добавить a Sprite Kit Scene в представление, а также установить .edgesIgnoringSafeArea(.all) , но я все еще могу скрыть их или поместить представление под верхнюю панель.

Ответ №1:

Оказывается, это действительно «работает», даже с SwiftUI:

С помощью конструктора интерфейса: https://developer.apple.com/documentation/watchkit/wkinterfaceskscene/configuring_a_watchkit_scene_in_a_storyboard

Использование SwiftUI (watchOS 7):

 @main
struct BitApp: App {
  @SceneBuilder var body: some Scene {
    WindowGroup {
      ContentView()
        .edgesIgnoringSafeArea(.all)
    }

    WKNotificationScene(controller: NotificationController.self, category: "myCategory")
  }
}
 

Удалите все NavigationView и используйте edgesIgnoringSafeArea , и это работает!

Редактировать: это не приведет к удалению часов, так как они будут расположены в углу перед сценой SpriteKit.

Комментарии:

1. С Interface Builder, который работает только для SpriteKit или SceneKit, попробуйте и посмотрите. Я отредактировал свой ответ, чтобы отразить это.

2. Это должно быть общепринятым ответом.

Ответ №2:

Если это не игра, невозможно выделить пространство вверху, watchOS резервирует его, чтобы время всегда было видно пользователю.

Комментарии:

1. В раскадровке я могу выбрать «Полноэкранный режим» для просмотра. Неужели это просто невозможно в SwiftUI прямо сейчас?