mirror of
https://github.com/kunkundi/crossdesk.git
synced 2026-10-17 01:13:19 +08:00
49 lines
1.7 KiB
Swift
49 lines
1.7 KiB
Swift
import SwiftUI
|
|
import UIKit
|
|
|
|
final class CrossDeskAppDelegate: NSObject, UIApplicationDelegate {
|
|
static var supportedOrientations: UIInterfaceOrientationMask =
|
|
UIDevice.current.userInterfaceIdiom == .pad ? .all : .portrait
|
|
|
|
func application(_ application: UIApplication,
|
|
supportedInterfaceOrientationsFor window: UIWindow?)
|
|
-> UIInterfaceOrientationMask {
|
|
Self.supportedOrientations
|
|
}
|
|
}
|
|
|
|
enum AppOrientation {
|
|
static func update(to orientations: UIInterfaceOrientationMask) {
|
|
DispatchQueue.main.async {
|
|
// iPad windows can rotate and resize independently of the session.
|
|
// Keep all orientations available and let the window manager choose
|
|
// the geometry; the phone still locks the home screen to portrait.
|
|
guard UIDevice.current.userInterfaceIdiom != .pad else { return }
|
|
CrossDeskAppDelegate.supportedOrientations = orientations
|
|
|
|
for case let scene as UIWindowScene in UIApplication.shared.connectedScenes {
|
|
scene.windows.forEach {
|
|
$0.rootViewController?.setNeedsUpdateOfSupportedInterfaceOrientations()
|
|
}
|
|
scene.requestGeometryUpdate(
|
|
.iOS(interfaceOrientations: orientations)
|
|
) { error in
|
|
NSLog("CrossDesk orientation update failed: %@", error.localizedDescription)
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
@main
|
|
struct CrossDeskMobileApp: App {
|
|
@UIApplicationDelegateAdaptor(CrossDeskAppDelegate.self) private var appDelegate
|
|
@StateObject private var session = RemoteSessionModel()
|
|
|
|
var body: some Scene {
|
|
WindowGroup {
|
|
ContentView(session: session)
|
|
}
|
|
}
|
|
}
|