大噶好啊我系肥Mo
2021, 我拥有了一台M1 MacBook for dup code
在M1上, 任何值得记录的事情我都会写下来,欢迎交流!!
Thanks all the bugs!!
2021, Good Health Good Luck!!🍻
Issue reported from Client:
最近客户报过来一个问题,说我们的app在他的iPad air4上不能全屏运行🤔
Reproduce case
由于我手上没有iPad air 4。。。(不怕🙅♀️!!)
我一直是用Home Button的iPad测试,是没问题的,
那就直接定位到是全面屏iPad搞事
我们可以用模拟器去reproduce呢个case。
我相信很多项目其实是不能用模拟器跑的,因为项目上可能会用到一些第三方库,这些库是不能通过模拟器进行编译的,这里我们可以看一个图👇
这里有个小技巧要分享给大家的就是:我们现在是production fixing,目的是为了解决办法的,我们在没有真机的情况下一定要whatever跑模拟器,由于项目的保守,我们一直都用Xcode10.1 开发,Xcode10.1 是没有iPad air 4 模拟器的,那我们选择iPad pro 12.9, iOS13.2.2(全面屏iPad),有任何报错的地方直接无情注释,直到可以运行在模拟器
果不其然,在iPad pro 12.9 一样, 出现黑边👇
而正常是这样显示的👇
Root cause chasing
-
这种情况就好像iPhone上的app无情运行在iPad上,用是能用的,只是分辨率没调过来啧,如果是这种情况一般都是开发者没有勾选Universal选项,但是项目上的app是纯iPad app来的,不考虑这种情况
- 项目上规定要使用Xcode10.1开发,用的sdk是iOS12去构建的app,会不会是因为版本太低了呢??于是我新建了一个项目,结果是正常能全屏显示的。🤔
-
我尝试去打印运行时的mainscreen 的宽高,发现最顶层的页面宽高是 1024*768,但模拟器的是iPad pro 12.9 inch, 宽高应该是1366 * 1024,而且仔细观察iPad 的状态栏是跟随着应用的宽度的,并不是全屏,这个时候应该不是某个页面的设置问题,是整体显示模式的问题
-
查阅资料后发现,启动图的大小会影响程序能不能满屏显示,于是查了一下项目的启动图大小,发现高分辨率的启动图是准备好的,很明显不起作用👇
-
我又发现项目是用LaunchImage 设置启动图
- 其实苹果爸爸已经不赞成通过
launchimage
去设置启动图,取而代之的是使用launchscreen.storyboard
,我们的项目是企业级app,不需要上app store,否则
从2020
年4
月开始,所有支持iOS13
的App必须提供LaunchScreen.storyboard
,或将无法提交到AppStore进行审核。
Workaround
我的这个项目的启动图是全黑的,所以没有太多顾虑,如果是真的有启动图的需要,則需要在Launchscreen.storyboard设置相关的Image view控件,并且做好Autolayout for 各种尺寸的适配
-
创建LaunchScreen.storyboard
File->new->Launch Screen, 命名为 "LaunchScreen.storyboard
-
删除所有launch image setting in Build Settings
删除Image.xcassets 下所有启动图的设置
-
设置 "LaunchScreen.storyboard" 作为 Launch Image Source File
Rebuild搞掂😎
Done the bug fix.
写作初心
梳理,积累,分享,交流
靴靴你能看到这里
欢迎交流
下一篇见 ᕕ(ᐛ)ᕗ