美文网首页iOSiOS BlogiOS开发心得
启动页面渐变放大动画效果

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

作者: 健健锅 | 来源:发表于2016-05-27 15:15 被阅读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

    相关文章

      网友评论

      • 羊肉泡馍啊:图片获取不了
      • hrscy:如果第一个界面是登录界面,用户登录成功跳转到首页,当用户第二次打开app的时候,用户登录过,不用再次登录,直接跳转到首页,那这个动画应该放到哪里?放到viewWillAppear 就不行了吧?那如果放到 AppDelegate 的启动方法里行不行呢?
        健健锅:@hrscy 可以啊,当然可以
      • zombieEngineer:放大,加个3D效果,就可以了,效果比这好多了,而且代码就一句
        健健锅:@zombieEngineer 怎么加,求指导
      • 1d1146c7943d:谢谢分享
      • 混不吝丶:留个demo:smile:
        健健锅:@混不吝丶 https://git.oschina.net/GAOZEJIAN/imagestartObject.git 欢迎指点
      • Easy_VO:CUICatalog: Invalid asset name supplied: (null),并不起作用
        健健锅:@Easyzhan 你是怎么写的
        Easy_VO:@健健锅 没效果啊还是一闪而过-。-
        健健锅:@Easyzhan ????

      本文标题:启动页面渐变放大动画效果

      本文链接:https://www.haomeiwen.com/subject/vjqfdttx.html