iOS开发_启动页动画

2018-07-12  本文已影响0人  iOS_PM_WEB_尛鹏

【作者前言】:13年入圈,分享些本人工作中遇到的点点滴滴那些事儿,17年刚开始写博客,高手勿喷!以分享交流为主,欢迎各路豪杰点评改进!

1.应用场景:

很多时候我们需要利用启动页做一些动画处理,这里介绍一种简单的易于实现的过渡动画;

2.实现目标:

Attention:复杂的动画不是启动页能够处理的,而是以假乱真用启动页做第一帧衍生出其他的比较炫彩的动画,原理如此,实现很简单就不过多介绍了。
本篇主要讲述的是通过直接获取启动页来设置一些简单过渡动画

3.代码说明:

/**传统的方式,需要根据各种机型的尺寸去处理不同的图片,
该方式在每每有新机型出现的时候,弊端就及其明显,
这里主要借鉴了Stack Overflow上的一篇文章
(http://stackoverflow.com/users/1320010/cherpak-evgeny),
通过获取LaunchImage来通配性的加上简易的过渡动画*/

//获取窗口尺寸
CGSize viewSize = self.window.bounds.size;
//默认应用为竖屏
//横屏请设置成 @"Landscape"
NSString *viewOrientation = @"Portrait";    
NSString *launchImageName = nil;
//获取LaunchImage的信息数组
NSArray *launchimagesArr = [[[NSBundle mainBundle] infoDictionary] valueForKey:@"UILaunchImages"];
//快速遍历包含启动页信息的数组
for (NSDictionary *dict in launchimagesArr)
{
//拿到启动页的图片尺寸大小
    CGSize imageSize = CGSizeFromString(dict[@"UILaunchImageSize"]);
    //图片尺寸与窗口尺寸一致并且方向关键信息也一致时
    if (CGSizeEqualToSize(imageSize, viewSize) && [viewOrientation isEqualToString:dict[@"UILaunchImageOrientation"]])
    {
//满足上述条件时,持有下此时的启动图片名称
        launchImageName = dict[@"UILaunchImageName"];
    }
}

//实例一个跟启动页一样的伪启动页launchView
UIImageView *launchView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:launchImageName];
launchView.frame = self.window.bounds;
launchView.contentMode = UIViewContentModeScaleAspectFill;
//将其加载Window上
[self.window addSubview:launchView];

//设置动画将伪启动页逐渐透明和移除,实现启动页渐渐消失的简易过渡动画
[UIView animateWithDuration:2.0f
                      delay:0.0f
                    options:UIViewAnimationOptionBeginFromCurrentState
                 animations:^{
                     //动画效果
                     launchView.alpha = 0.0f;
                     launchView.layer.transform = CATransform3DScale(CATransform3DIdentity, 1.2, 1.2, 1);
                     
                 }
                 completion:^(BOOL finished) {
                     //动画效果完成后,移除伪启动页
                     [launchView removeFromSuperview];
                 }];
上一篇 下一篇

猜你喜欢

热点阅读