【作者前言】: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];
}];
网友评论