diff --git a/Limelight/OrientationHelper.swift b/Limelight/OrientationHelper.swift new file mode 100644 index 00000000..88832b19 --- /dev/null +++ b/Limelight/OrientationHelper.swift @@ -0,0 +1,42 @@ +// +// OrientationHelper.swift +// Moonlight-ZWM +// +// Created by ZWM on 2024/7/12. +// Copyright © 2024 Moonlight Game Streaming Project. All rights reserved. +// + +import Foundation + +import UIKit + +class OrientationHelper { + static func updateOrientationToLandscape() { + if #available(iOS 16.0, *) { + // 调用此方法会使视图控制器重新评估其支持的方向集。 + UIApplication.shared.keyWindow?.rootViewController?.setNeedsUpdateOfSupportedInterfaceOrientations() + + // 遍历并更新导航控制器的方向 + if let navigationController = UIApplication.shared.keyWindow?.rootViewController as? UINavigationController { + navigationController.setNeedsUpdateOfSupportedInterfaceOrientations() + } + + // 尝试更新窗口场景的几何形状为横屏 + if let scene = UIApplication.shared.connectedScenes.first as? UIWindowScene { + let geometryPreferences = UIWindowScene.GeometryPreferences.iOS(interfaceOrientations: .landscape) + scene.requestGeometryUpdate(geometryPreferences) { (receivedError: Error?) in + if let error = receivedError { + // 处理错误 + print("Error updating window scene geometry: \(error)") + } else { + // 没有错误,执行后续操作 + print("Window scene geometry updated successfully.") + } + } + } else { + // 早于 iOS 16.0 的版本的回退逻辑 + print("iOS version is less than 16.0, falling back to earlier behavior.") + } + } + } +} diff --git a/Moonlight.xcodeproj/project.pbxproj b/Moonlight.xcodeproj/project.pbxproj index 05b1f473..3efd7346 100644 --- a/Moonlight.xcodeproj/project.pbxproj +++ b/Moonlight.xcodeproj/project.pbxproj @@ -23,6 +23,7 @@ 843CC7F12C1E757D00BBC475 /* NativeTouchPointer.m in Sources */ = {isa = PBXBuildFile; fileRef = 843CC7EF2C1E757D00BBC475 /* NativeTouchPointer.m */; }; 843CC7F62C1E7A1700BBC475 /* NativeTouchHandler.m in Sources */ = {isa = PBXBuildFile; fileRef = 843CC7F52C1E7A1700BBC475 /* NativeTouchHandler.m */; }; 843CC7F72C1E7A1700BBC475 /* NativeTouchHandler.m in Sources */ = {isa = PBXBuildFile; fileRef = 843CC7F52C1E7A1700BBC475 /* NativeTouchHandler.m */; }; + 843E93BE2C41528700B1651F /* OrientationHelper.swift in Sources */ = {isa = PBXBuildFile; fileRef = 843E93BD2C41528700B1651F /* OrientationHelper.swift */; }; 8454AC662C31907F00F0A302 /* iPad.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 8454AC682C31907F00F0A302 /* iPad.storyboard */; }; 8454AC6A2C319BDA00F0A302 /* iPhone.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 8454AC6C2C319BDA00F0A302 /* iPhone.storyboard */; }; 84591A512BE1625E006AAB10 /* CustomEdgeSwipeGestureRecognizer.m in Sources */ = {isa = PBXBuildFile; fileRef = 84591A502BE1625E006AAB10 /* CustomEdgeSwipeGestureRecognizer.m */; }; @@ -215,6 +216,7 @@ 843CC7EF2C1E757D00BBC475 /* NativeTouchPointer.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = NativeTouchPointer.m; sourceTree = ""; }; 843CC7F42C1E778000BBC475 /* NativeTouchHandler.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = NativeTouchHandler.h; sourceTree = ""; }; 843CC7F52C1E7A1700BBC475 /* NativeTouchHandler.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = NativeTouchHandler.m; sourceTree = ""; }; + 843E93BD2C41528700B1651F /* OrientationHelper.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = OrientationHelper.swift; sourceTree = ""; }; 8454AC672C31907F00F0A302 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/iPad.storyboard; sourceTree = ""; }; 8454AC692C31907F00F0A302 /* mul */ = {isa = PBXFileReference; lastKnownFileType = text.json.xcstrings; name = mul; path = mul.lproj/iPad.xcstrings; sourceTree = ""; }; 8454AC6B2C319BDA00F0A302 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/iPhone.storyboard; sourceTree = ""; }; @@ -648,6 +650,7 @@ FB1D59961BBCCB6400F482CA /* ComputerScrollView.m */, FB1D59981BBCCD7E00F482CA /* AppCollectionView.h */, FB1D59991BBCCD7E00F482CA /* AppCollectionView.m */, + 843E93BD2C41528700B1651F /* OrientationHelper.swift */, ); name = Moonlight; path = Limelight; @@ -1196,6 +1199,7 @@ FBDE86E619F82297001C18A8 /* UIAppView.m in Sources */, FB89462F19F646E200339C8A /* Connection.m in Sources */, FB9AFD321A7D867C00872C98 /* AppAssetRetriever.m in Sources */, + 843E93BE2C41528700B1651F /* OrientationHelper.swift in Sources */, FB4678FF1A565DAC00377732 /* WakeOnLanManager.m in Sources */, FB53E1431BE5DC4400CD6ECE /* IdManager.m in Sources */, 9897B6A1221260EF00966419 /* Controller.m in Sources */,