文档章节

iOS视图弹跳动画

记忆淡忘
 记忆淡忘
发布于 2016/01/07 14:41
字数 399
阅读 1286
收藏 0

//动画弹跳效果关键代码

弹跳多次可自行多嵌套几次   调用此方法  只需传入弹跳对象

- (void)animationShootOut:(UIView *)animationView{

    CGRect frame = animationView.frame;

    [UIView animateWithDuration:0.4f delay:0.0f options:UIViewAnimationOptionCurveEaseIn animations:^(void){

        

    } completion:^(BOOL finished){

        [UIView animateWithDuration:0.4f delay:0.0f options:UIViewAnimationOptionCurveEaseOut animations:^(void){

            //弹起

            animationView.frame = CGRectMake(frame.origin.x, frame.origin.y-20, frame.size.width, frame.size.height);

        } completion:^(BOOL finished){

            [UIView animateWithDuration:0.4f delay:0.0f options:UIViewAnimationOptionCurveEaseIn animations:^(void){

                //下降

                animationView.frame = frame;

            } completion:^(BOOL finished){

                [UIView animateWithDuration:0.4f delay:0.0f options:UIViewAnimationOptionCurveEaseOut animations:^(void){

                    //弹起

                    animationView.frame = CGRectMake(frame.origin.x, frame.origin.y-10, frame.size.width, frame.size.height);

                } completion:^(BOOL finished){

                    //下降

                    [UIView animateWithDuration:0.4f delay:0.0f options:UIViewAnimationOptionCurveEaseOut animations:^(void){

                        animationView.frame = frame;

                    } completion:^(BOOL finished){

                    }];

                }];

            }];

        }];

    }];

}



突然发现这样太麻烦 要是想多跳几次就要写很多了,所以刚刚又封装了一下    就是感觉跳动不流畅  太生硬 暂时没什么思路解决

封装的就是用一个C 函数递归调用   感觉还行

//弹射动画函数

void shootOutAnimation(UIView *view ,int n,float height,CGRect frame,int num) {

    //n 为弹跳的次数 如果传入的是一个基数  那么就会自动默认加一为偶数

    //height 为第一次弹跳的最高高度 20

    //view 为传入的视图

    //frame 为传入视图的坐标

    //num 必须和传入的弹跳次数一致 

    if (n<0) {

        return;

    }

    n = n-1;

    [UIView animateWithDuration:0.4f delay:0.0f options:UIViewAnimationOptionCurveEaseIn animations:^(void){

        view.frame = CGRectMake(frame.origin.x, frame.origin.y-((n%2)?0:(n+2)*(height/num)), frame.size.width, frame.size.height);

    } completion:^(BOOL finished){

        shootOutAnimation(view, n, height, frame,num);

    }];

}




今天又发现另外一方法  mark

void shakerAnimation (UIView *view ,NSTimeInterval duration,float height){

    CAKeyframeAnimation * animation = [CAKeyframeAnimation animationWithKeyPath:@"transform.translation.y"];

    CGFloat currentTx = view.transform.ty;

    animation.duration = duration;

    animation.values = @[@(currentTx), @(currentTx + height), @(currentTx-height/3*2), @(currentTx + height/3*2), @(currentTx -height/3), @(currentTx + height/3), @(currentTx)];

    animation.keyTimes = @[ @(0), @(0.225), @(0.425), @(0.6), @(0.75), @(0.875), @(1) ];

    animation.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut];

    [view.layer addAnimation:animation forKey:@"kViewShakerAnimationKey"];

}



© 著作权归作者所有

记忆淡忘
粉丝 6
博文 88
码字总数 6967
作品 0
长沙
私信 提问
UIView Animations 学习笔记(二)定制动画效果及切换效果

目录 UIView Animations 学习笔记(一)简介及API说明 UIView Animations 学习笔记(二)定制动画效果及切换效果 UIView Animation 学习笔记 应用示例 二、视图切换定制 2.1 基础说明 要创建...

灰大羊
2015/08/12
0
0
系统学习iOS动画之零:说明和目录

动画制作很有趣,可以为用户界面注入活力。 如果使用得当,动画可以向用户传达信息,并将用户注意力吸引到界面的重要部分。 之前也做过一些iOS动画,但一直没有系统学习过,这次我用RW网站的...

Andy_Ron
2018/12/21
0
0
UIView Animations 学习笔记(一)简介及API说明

目录 UIView Animations 学习笔记(一)简介及API说明 UIView Animation 学习笔记 应用示例 一、简介 随着iOS7的发布,动画与运动效果变成了Apple和第三方开发者进行app设计的中心。iOS7介绍...

灰大羊
2015/08/01
0
0
设计 iOS 应用时需要知道的 5 件事

根据我们制作优秀的 iOS 应用的经验,我们认为设计师应该在心里的牢记适用于 iOS 的 5 件事。虽然本文关注的重点只在 iOS 应用,但大部分的意见也适用于其他移动平台。 1. 了解您的媒体 这似...

oschina
2013/03/21
3.8K
7
使用 React Native 一年后的感受

当我在面试Discord的时候,技术主管Stanislav跟我说: React Native代表着未来。等它一发布,我们就会用它从零构建iOS应用。 作为一名原生iOS开发者,基于先前使用PhoneGap的经验,我非常怀疑...

oschina
2016/06/22
66.1K
31

没有更多内容

加载失败,请刷新页面

加载更多

计算机网络

计算机网络体系结构 OSI 其中表示层和会话层用途如下: 表示层 :数据压缩、加密以及数据描述,这使得应用程序不必关心在各台主机中数据内部格式不同的问题。 会话层 :建立及管理会话。 五层...

一只小青蛙
今天
2
0
0.01-Win10安装linux子系统

一、安装Debian子系统 -1、控制面板设置: -1.1、打开“控制面板” —— “程序” —— “启用或关闭Windows功能” —— 勾选 “适用于Linux的Windows子系统” -2、设置: -2.1、打开“设置”...

静以修身2025
昨天
2
0
init 0-6 (启动级别:init 0,1,2,3,4,5,6)

启动级别: init 0,1,2,3,4,5,6 这是个很久的知识点了,只是自己一直都迷迷糊糊的,今天在翻出来好好理解下。。 0: 停机 1:单用户形式,只root进行维护 2:多用户,不能使用net file system...

圣洁之子
昨天
2
0
Android Camera HAL浅析

1、Camera成像原理介绍 Camera工作流程图 Camera的成像原理可以简单概括如下: 景物(SCENE)通过镜头(LENS)生成的光学图像投射到图像传感器(Sensor)表面上,然后转为电信号,经过A/D(模数转...

天王盖地虎626
昨天
2
0
聊聊Elasticsearch的ProcessProbe

序 本文主要研究一下Elasticsearch的ProcessProbe ProcessProbe elasticsearch-7.0.1/server/src/main/java/org/elasticsearch/monitor/process/ProcessProbe.java public class ProcessProb......

go4it
昨天
3
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部