在 iOS 开发中,我们用到了启动页,它只在程序启动时加载一次,一闪而过然后就是执行我们程序的代码.它就像一张名片一样,使我们 APP 的一张脸,反应了我们APP 的主题和设计理念.
笔者以前对这个启动页没有什么操作,只要放到Assets.xcassets里边,它会识别不同的尺寸启动图.最近做一个项目因为我们 APP 所有接口IP 地址是从服务器获取的,如果服务器有最新的 IP 就返回一个 list ,如果是505就代表服务器停服整个APP 不能被使用,只停留在登录页面,并提示用户服务器正在维护无法.
那么问题就来了,因为 iOS9以后didFinishLaunchingWithOptions 这个代理方法执行完毕后,必须制定窗口的根控制器,因为我在这个方法前请求了协转接口(获取整个工程所有请求的 ip 地址)导致了没法确定程序启动时先加载那个控制器作为window的rootViewController ,所以我想着先用一个看似没有卵用的CYInitializeViewController 控制器做为窗口的rootViewController 这个控制器只做一件事那就是放一张和启动页一模一样的图,做为中间过渡期间使用.
为了获取启动页图片我写了个方法,还把启动页的几张图拷贝了一份放到工程中.
然后图片名依次为:welcome3.5,welcome4.0 welcome4.7,welcome5.5 然后苦逼的在哪里判断当前屏幕的尺寸,选择不同的图片名生产不同的 image对象.
这个方法虽然可以实现启动页的效果,但是它获取的不是真正的启动页,是我用的跟启动页完全一模一样的一套图,它的弊端就是占用安装包体积,造成图片重复导入,如果将来 iOS 出新设备还得去判断新的屏幕尺寸.
接下来我们介绍另一种方法去获取启动页图片,通过读取info.plist文件获取启动页图片名,代码如下
这样通过这段代码,你只需要把它抽成一个 UIImage的分类,以后就可以动态的获取启动页图片.