iOS动画开发之一——UIViewAnimation动画的使用

iOS动画开发之一——UIViewAnimation动画的使用

一、简介

      一款APP的成功与否,除了完善的功能外,用户体验也占有极大的比重,动画的合理运用,可以很好的增强用户体验。iOS开发中,常用的动画处理有UIView动画编程和核心动画编程,其中UIView动画使用简便,开发中应用十分广泛。这篇博客,主要讨论UIView的动画使用。

二、UIView动画的几个方法

+ (void)animateWithDuration:(NSTimeInterval)duration animations:(void (^)(void))animations;

       这个是参数最少的一个方法,我们可以通过设置一个时间和block块来完成动画,时间参数是动画执行的时长,block块中为要执行的动画动作,具体可以执行那些动作,我们会在后面说。例如在1S内将view渐变透明:

?


1

2

3

[UIView animateWithDuration:1 animations:^{

        _myView.alpha=0;

    }];

+ (void)animateWithDuration:(NSTimeInterval)duration animations:(void (^)(void))animations completion:(void (^)(BOOL finished))completion;

       这个函数会带两个block块,用法和第一个函数相似,设置一个执行时间和一个执行动作,第二个block块中可以添加一个动画执行结束后的动作,作为补充,例如下面代码的效果,在1S内将view渐变为透明,动画结束后,view在瞬间变回不透明:

?


1

2

3

4

5

6

7

[UIView animateWithDuration:1 animations:^{

        _myView.alpha=0;

    } completion:^(BOOL finished) {

        if (finished) {

            _myView.alpha=1;

        }

    }];

+ (void)animateWithDuration:(NSTimeInterval)duration delay:(NSTimeInterval)delay options:(UIViewAnimationOptions)options animations:(void (^)(void))animations completion:(void (^)(BOOL finished))completion;

       这个函数除了上面的属性外,可以设置延时执行,同时可以设置一个动画效果参数,这个参数是个枚举,它可以影响动画的执行效果,后面会再总结。

+ (void)animateWithDuration:(NSTimeInterval)duration delay:(NSTimeInterval)delay usingSpringWithDamping:(CGFloat)dampingRatio initialSpringVelocity:(CGFloat)velocity options:(UIViewAnimationOptions)options animations:(void (^)(void))animations completion:(void (^)(BOOL finished))completion;

     这个函数是iOS7之后的一个新函数,通过这个函数,我们可以方便的制作出效果炫酷的动画,这个函数的核心是两个阻尼参数,参数dampingRatio可以理解为弹簧效果的强弱,设置1则没有回弹效果,设置0则会剧烈的阻尼回弹。velocity参数用于设置弹簧的初始速度。

三、UIView动画可以操作的视图属性

       通过上面的介绍,我们了解了几个使用动画的函数,那么那些属性可以产生动画效果呢?

官方文档告诉我们这些属性是可以通过上述方法进行动画的:

四、动画执行选项设置

   在UIView执行动画的相关函数中,有UIViewAnimationOptions这个参数可以对动画的执行效果进行设置,这个枚举非常多,可分为三部分,如下:

?


1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

enum {

   //这部分是基础属性的设置

   UIViewAnimationOptionLayoutSubviews            = 1 <<  0,//设置子视图随父视图展示动画

   UIViewAnimationOptionAllowUserInteraction      = 1 <<  1,//允许在动画执行时用户与其进行交互

   UIViewAnimationOptionBeginFromCurrentState     = 1 <<  2,//允许在动画执行时执行新的动画

   UIViewAnimationOptionRepeat                    = 1 <<  3,//设置动画循环执行

   UIViewAnimationOptionAutoreverse               = 1 <<  4,//设置动画反向执行,必须和重复执行一起使用

   UIViewAnimationOptionOverrideInheritedDuration = 1 <<  5,//强制动画使用内层动画的时间值

   UIViewAnimationOptionOverrideInheritedCurve    = 1 <<  6,//强制动画使用内层动画曲线值

   UIViewAnimationOptionAllowAnimatedContent      = 1 <<  7,//设置动画视图实时刷新

   UIViewAnimationOptionShowHideTransitionViews   = 1 <<  8,//设置视图切换时隐藏,而不是移除

   UIViewAnimationOptionOverrideInheritedOptions  = 1 <<  9,//

   //这部分属性设置动画播放的线性效果

   UIViewAnimationOptionCurveEaseInOut            = 0 << 16,//淡入淡出 首末减速

   UIViewAnimationOptionCurveEaseIn               = 1 << 16,//淡入 初始减速

   UIViewAnimationOptionCurveEaseOut              = 2 << 16,//淡出 末尾减速

   UIViewAnimationOptionCurveLinear               = 3 << 16,//线性 匀速执行   

   //这部分设置UIView切换效果

   UIViewAnimationOptionTransitionNone            = 0 << 20,

   UIViewAnimationOptionTransitionFlipFromLeft    = 1 << 20,//从左边切入

   UIViewAnimationOptionTransitionFlipFromRight   = 2 << 20,//从右边切入

   UIViewAnimationOptionTransitionCurlUp          = 3 << 20,//从上面立体进入

   UIViewAnimationOptionTransitionCurlDown        = 4 << 20,//从下面立体进入

   UIViewAnimationOptionTransitionCrossDissolve   = 5 << 20,//溶解效果

   UIViewAnimationOptionTransitionFlipFromTop     = 6 << 20,//从上面切入

   UIViewAnimationOptionTransitionFlipFromBottom  = 7 << 20,//从下面切入

};

提示:1,属性可以使用|进行多项合并。

          2,这类的动画可以进行嵌套,其中有一点需要注意,内层动画的执行时间和曲线模式会默认继承外层动的,若要强制使用新的参数,使用如下的两个参数:

?


1

2

UIViewAnimationOptionOverrideInheritedDuration = 1 <<  5,//强制动画使用内层动画的时间值

   UIViewAnimationOptionOverrideInheritedCurve    = 1 <<  6,//强制动画使用内层动画曲线值

       

时间: 2024-08-03 17:58:33

iOS动画开发之一——UIViewAnimation动画的使用的相关文章

iOS动画开发之四——核心动画编程(CoreAnimation)

iOS动画开发之四--核心动画编程(CoreAnimation) 一.引言         前几篇博客详细介绍了有关UIView层的动画使用与相关的效果,然而这些动画是UIKit为我们封装好的核心动画层的方法,通过这些方法,我们可以用的更加简便,当然功能也十分强大,基本能达到我们项目的大多需求.但是如果你想更加自由的通过动画操作视图的属性,你就需要跳过UIKit的封装,使用CoreAnimation核心动画层的方法来实现动画. 二.开始前的准备 1.认识一个的朋友         在开始介绍核心

iOS动画开发之五——炫酷的粒子效果

iOS动画开发之五--炫酷的粒子效果         在上几篇博客中,我们对UIView层的动画以及iOS的核心动画做了介绍,基本已经可以满足iOS应用项目中所有的动画需求,如果你觉得那些都还不够炫酷,亦或是你灵光一现,想用UIKit框架写出一款炫酷的休闲游戏,那个有一个东西可以帮到你:iOS的粒子效果引擎. 一.粒子发射器         iOS中的粒子效果有两部分组成,一部分为发射器,设置例子发射的宏观属性,另一部分是粒子单元,用于设置相应的粒子属性.粒子发射器是基于Layer层,没错,又是

iOS开发之核心动画(Core Animation)

1.概述 Core Animation是一组非常强大的动画处理API,使用它能做出非常炫丽的动画效果,而且往往是事半功倍,使用它需要先添加QuartzCore.framework和引入对应的框架<QuartzCore/QuartzCore.h>. 特别注意的是核心动画的动画效果只是"假象",产生动画的那个view实际上并未发生任何变化. 开发步骤: 第一步:初始化一个动画对象(CAAnimation)并设置一些动画相关属性. 第二步:添加动画对象到层(CALayer)中,开

iOS动画开发之三——UIView的转场切换

iOS动画开发之三--UIView的转场切换         前两篇博客中,我们分别介绍了UIView动画的两种使用方式,分别为,带block的方式:http://my.oschina.net/u/2340880/blog/484457 ,传统的属性配置的方式:http://my.oschina.net/u/2340880/blog/484538.通过UIView动画的类方法,我们可以十分方便的使View某些属性改变的同时拥有动画效果.这篇博客主要讨论View切换的动画操作.         两

iOS动画开发之二——UIView动画执行的另一种方式

iOS动画开发之二--UIView动画执行的另一种方式         上一篇博客中介绍了UIView的一些常用动画,通过block块,我们可以很方便简洁的创建出动画效果:http://my.oschina.net/u/2340880/blog/484457,这篇博客再介绍一种更加传统的执行UIView的动画的方法.         这种方式相比如block的方式,显得要麻烦一些,apple官方也推荐我们使用带block的创建动画的方式,我们可以将编程重心更多的放在动画逻辑的实现上.使用begi

详解iOS开发中的转场动画和组动画以及UIView封装动画_IOS

一.转场动画 CAAnimation的子类,用于做转场动画,能够为层提供移出屏幕和移入屏幕的动画效果.iOS比Mac OS X的转场动画效果少一点 UINavigationController就是通过CATransition实现了将控制器的视图推入屏幕的动画效果 属性解析: type:动画过渡类型 subtype:动画过渡方向 startProgress:动画起点(在整体动画的百分比) endProgress:动画终点(在整体动画的百分比) 转场动画代码示例 1.界面搭建 2.实现代码 复制代码

iOS开发:UIView动画详解

  执行动画所需要的工作由UIView类自动完成,但仍要在希望执行动画时通知视图,为此需要将改变属性的代码包装到一个代码块中. 1.UIView动画具体创建方法 - (void)buttonPressed { // 交换本视图控制器中2个view位置 [self.view exchangeSubviewAtIndex:0 withSubviewAtIndex:1]; //UIView开始动画,第一个参数是动画的标识,第二个参数附加的应用程序信息用来传递给动画代理消息 [UIView beginA

iOS 画面切换的各种动画效果附私有API

ios的画面切换的动画效果的API主要通过调用系统已定义的动画效果实现,这些效果已基本囊括开发的需求,如果需要更加复杂的效果,可以考虑CATransition来实现 以下是基本的四种效果 kCATransitionPush 推入效果 kCATransitionMoveIn 移入效果 kCATransitionReveal 截开效果 kCATransitionFade 渐入渐出效果 以下API效果可以安全使用 cube 方块 suckEffect 三角 rippleEffect 水波抖动 page

C#开发WPF/Silverlight动画及游戏系列教程(Game Course):(三十二)

C#开发WPF/Silverlight动画及游戏系列教程(Game Course):(三十二) 雷.混.冰.毒.火.风 - 幻化中的魔法魅力 本节,我将为大家演示如何为游戏中的魔法增加华丽的附加属性. 第一步,定义规则: 1)定义魔法附加属性分类:在本教程示例游戏中,我将魔法附加属性定义为6类:雷.混.冰.毒.火.风,为什么要以这样无规律的方式去命名?因为是教程,我们需要学习的是如何实现对应效果,此6类属性算是目前网游中最流行的六大魔法属性,如果大家都掌握了,无论是中国式5行还是诸如其他的风格设