iOSiOS BlogiOS开发心得

启动页面渐变放大动画效果

2016-05-27  本文已影响1495人  健健锅

尾部有代码地址


6月-08-2016 14-46-22.gif

最近再用酷狗音乐,每次酷狗启动的时候有一个动画效果就是启动图片慢慢放大,然后慢慢消隐!!!
首先分析效果
1.图片放大 必然是 imageview 的frame的withe 变大 height 也变大
然后imageview 的center是在屏幕中心的
2.图片慢慢隐藏,显然是图片的alpha 由1.0 变成0.0
3. 既然是一切是一个动画效果那么必然会是:
UIview animation~~~~~~~~~~~~~ 这个函数
当一切效果结束以后 imageview removeframesubview.

  UIWindow * window = [[UIApplication sharedApplication]keyWindow] ;
    UIImageView *welcome = [[UIImageView alloc]initWithFrame:window.bounds];
    
    [welcome setImage:[UIImage imageNamed:[self getLaunchImageName]]];
    
    //把背景图放在最上层
    
    [window addSubview:welcome];
    
    [window bringSubviewToFront:welcome];
    
    welcome.alpha = 0.99;//这里alpha的值和下面alpha的值不能设置为相同的,否则动画相当于瞬间执行完,启动页之后动画瞬间消失。这里alpha设为0.99,动画就不会有一闪而过的效果,而是一种类似于静态背景的效果。设为0,动画就相当于是淡入的效果了。
    
    [UIView animateWithDuration:3.0f delay:0.0f options:UIViewAnimationOptionTransitionCrossDissolve animations:^{
        CGRect frame = welcome.frame;
        frame.size.width = window.size.width*1.3;
        frame.size.height = window.size.height*1.3;
        welcome.frame = frame;
        welcome.center = window.center;
        welcome.alpha = 0;
        
    } completion:^(BOOL finished) {
        
        [welcome removeFromSuperview];
        
    }];

接下来问题来了 这段代码写在哪里呢
既然是启动图 当然是在启动的时候
我们一般启动图是在这里加入的

78E0F438-4EBA-43E6-9371-9449798EF7E9.png
那么代码添加在哪里呢 无迹可寻了
启动图结束以后是进入了APP的首页 并且执行的第一个函数是控制器的
viewwillappear
那么就简单了 把以上代码放大 首页函数的viewwillappear函数
效果就好的

本人在这里有一个疑问 就是 不痛的launchimage 大小是不同的
那么在这段函数中应该怎样选择应该现显示的图片呢 欢迎指教

这次天加了效果图并且 将行以前遗留的问题解决了就是 放大的launchimage

- (NSString *)getLaunchImageName {
    
    CGSize viewSize = [[UIApplication sharedApplication]keyWindow].bounds.size;
    // 竖屏
    NSString *viewOrientation = @"Portrait";
    NSString *launchImageName = nil;
    NSArray* imagesDict = [[[NSBundle mainBundle] infoDictionary] valueForKey:@"UILaunchImages"];
    for (NSDictionary* dict in imagesDict) {
        CGSize imageSize = CGSizeFromString(dict[@"UILaunchImageSize"]);
        if (CGSizeEqualToSize(imageSize, viewSize) && [viewOrientation isEqualToString:dict[@"UILaunchImageOrientation"]]) {
            launchImageName = dict[@"UILaunchImageName"];
        }
    }
    return launchImageName;
}

//放大的图片调用它就行
    [welcome setImage:[UIImage imageNamed:[self getLaunchImageName]]];

更新 由于一些地方描述的不太清楚 所以今天把代码地址更新一下 大家可以指点一二
https://git.oschina.net/GAOZEJIAN/imagestartObject.git

上一篇下一篇

猜你喜欢

热点阅读