取消iPad左右横屏设置后上传App被拒,遇设备兼容报错
解决iPad端取消横屏后App被苹果审核拒绝的问题
我之前也碰到过一模一样的情况!苹果的审核逻辑是:新版本App不能移除旧版本已经支持的设备界面方向——毕竟老用户已经习惯了横屏使用你的App,直接砍掉这个支持会影响他们的体验,所以才会抛出这个报错。
给你一套亲测有效的解决步骤:
1. 先保留Info.plist里的原有方向设置
不要删除UISupportedInterfaceOrientations~ipad里的Landscape Left和Landscape Right条目,让它依然包含所有旧版本支持的方向(一般是Portrait、Portrait Upside Down、Landscape Left、Landscape Right这四个)。
2. 在代码层面强制iPad只支持竖屏
根据你的项目类型选择对应的实现方式:
如果你用的是UIKit项目
在AppDelegate.swift里添加这个方法,全局限制界面方向:
func application(_ application: UIApplication, supportedInterfaceOrientationsFor window: UIWindow?) -> UIInterfaceOrientationMask { // 如果你只需要竖屏,返回.portrait;如果要支持竖屏上下翻转,就返回.portrait.union(.portraitUpsideDown) return .portrait }
如果你用的是SwiftUI项目
通过UIApplicationDelegateAdaptor来适配AppDelegate的逻辑:
@main struct YourAppName: App { // 适配自定义AppDelegate @UIApplicationDelegateAdaptor(AppDelegate.self) var appDelegate var body: some Scene { WindowGroup { ContentView() } } } class AppDelegate: NSObject, UIApplicationDelegate { func application(_ application: UIApplication, supportedInterfaceOrientationsFor window: UIWindow?) -> UIInterfaceOrientationMask { return .portrait // 按需调整 } }
3. 测试验证
打包后在iPad上测试一下,不管怎么旋转设备,App都只会保持竖屏显示,同时Info.plist里的配置又符合苹果的审核要求,这样重新提交就能通过啦。
如果有个别页面需要特殊支持横屏,也可以单独在那个页面的ViewController里重写supportedInterfaceOrientations方法,覆盖全局设置就行。
内容的提问来源于stack exchange,提问作者sann chhailong




