最近项目经理要求启动图换成动态。当时我想多简单。可是实现过程中发现即使是一个简单的启动图,也是大有学问的。
首先我们知道,苹果是不允许将LaunchImage设置为动态图的(gif之类的)。所以想达到动态的效果一般只有两种方式:1.使用UIImageView的帧动画
第二种就是用UIWebView加载
可是使用UIWebView加载会存在一个问题:一般使用动态启动图的时候,为了让更自然的引渡,会将gif的第一帧图作为静态启动图使用。如果你这个gif图的背景色是深色的话,会出现从加载第一帧图到显示gif的过程中有白色闪屏的情况。
我用slowAnimation动画调试,代码调试,换静态启动页各种办法后,都找不出那个白色究竟是什么视图的颜色。它并不是UIWebView的背景色,也不是主Window的背景色。另外观摩了数十个app后,我发现其实很少有动态启动图为gif的。大多数的动态启动图是通过帧动画或者自定义的view动画来实现的。如果gif的帧数过多,显然帧动画是不可取的。你想想,就算有30帧,你要导4套图,那就是120张图片.....
自定义的view动画一般可以解决大部分问题。不过如果项目经理给的动态图效果过于复杂的话是很难实现的。
最后补充一点UIWebView的坑:UI导图一定要导物理像素.....因为UIWebView为了配合Web端,其显示像素和普通的UIView是不一样的。应该按照物理像素来导图。