为旧版应用添加LaunchScreen Xib后界面显示异常?
这种情况我之前维护旧项目时也碰到过,核心原因是LaunchScreen的启用会让你的应用自动开启Size Classes和Auto Layout支持,而早年依赖default.png做启动页的应用,大多是基于固定屏幕尺寸(比如3.5英寸iPhone的320x480)硬写布局的,完全没适配动态尺寸逻辑,系统就会自动把整个应用按兼容模式缩放显示,看起来就整体偏小了。
下面是几个针对性的解决步骤:
检查基础配置是否冲突
打开项目Target -> General -> Deployment Info,确认Main Interface正确指向你原来的主xib,Launch Screen File确实是新增的LaunchScreen.xib;同时检查Devices选项,如果你的应用只适配iPhone,别误选成Universal(除非你打算适配iPad)。关闭兼容缩放模式
打开项目的Info.plist,添加或修改UIRequiresFullScreen字段为YES;另外,如果plist里还残留着旧的UILaunchImages相关配置,直接删除它,避免和LaunchScreen的启动逻辑冲突。逐步适配Size Classes(长期推荐方案)
要是打算长期维护应用,最好改成适配动态尺寸:- 打开主xib文件,在右侧Attributes Inspector里找到
Size Classes,把原来的Fixed改成Any/Any。 - 替换掉控件的固定x/y坐标和宽高设置,给它们添加合适的Auto Layout约束(比如leading/trailing/top/bottom和父视图绑定)。
- 如果有代码写死frame的逻辑,改成根据当前屏幕尺寸动态计算,或者直接用Auto Layout的代码写法。
- 打开主xib文件,在右侧Attributes Inspector里找到
临时回退方案(不推荐长期使用)
要是只是想快速恢复显示效果,可以先移除LaunchScreen.xib,把Launch Screen File设置为空,重新启用default.png的启动图配置——但这不符合苹果现在的审核趋势,还是建议尽早做适配。
另外还有个小细节:如果你的应用只支持竖屏,要确保LaunchScreen.xib也只开启竖屏支持,否则也可能触发异常缩放。
内容的提问来源于stack exchange,提问作者amar

