Как установить размер WindowGroup в VisionOS?
Я хочу установить размеры определенного размера при работе на VisionOS. На iOS и maOS у нас есть.defaultSize
модификатор для этого. При сборке для VisionOS Xcode предлагает немного другой модификатор (с дополнительным параметром, называемым глубиной):
.defaultSize(width: 200.0, height: 200.0, depth: 200.0)
Однако, похоже, это не имеет никакого эффекта — размер моего окна в симуляторе остается прежним даже после новой установки приложения.
Как я могу установить
WindowGroup
до определенного размера в VisionOS?
1 ответ
Управление размерами тома SwiftUI
Указанный вами метод устанавливает размер по умолчанию для объемного окна.
func defaultSize(width: CGFloat,
height: CGFloat,
depth: CGFloat) -> some Scene
По умолчанию каждый параметр (ширина, высота, глубина) указывается в пунктах, что для объемных сцен в стандартном системном масштабе соответствует 1 миллиметру. Размер объемной сцены после создания неизменен. Если вы хотите следовать парадигме размера сцены RealityKit, используйте четвертый параметр инициализатора.in
параметр, позволяющий задать размер в метрах.
Для меня следующий подход помогает (прочитайте этот пост , чтобы увидеть содержимое тома в моем приложении VisionOS).
import SwiftUI
@main struct ParticlesApp : App {
var body: some Scene {
WindowGroup {
ContentView() // contains RealityKit scene
}
.windowStyle(.volumetric)
.defaultSize(width: 2.0, height: 2.0, depth: 2.0, in: .meters)
}
}
Управление размерами окна VisionOS
VisionOS SDK бета 2 (Xcode 15 бета 5)
Во второй бета-версии VisionOS внесены некоторые улучшения в проблему изменения размера 2D-окна. Вы можете контролировать размер окна, который меньше или равен2m X 1m
(но не больше этого размера).
@main struct SomeApp: App {
var body: some Scene {
WindowGroup {
ContentView() // contains 2D view
}
.defaultSize(width: 0.5, height: 0.5, depth: 0.0, in: .meters)
}
}
VisionOS SDK бета 1
.windowResizability(..)
модификатор и все другие методы изменения размера недоступны в VisionOS Beta 1 (Xcode 15 beta 4 и ниже).
Вы можете найти аналогичный вопрос на форумах разработчиков .