iOS - UIView 动画

1、UIView 动画

  • 核心动画 和 UIView 动画 的区别:

    • 核心动画一切都是假象,并不会真实的改变图层的属性值,如果以后做动画的时候,不需要与用户交互,通常用核心动画(转场)。
    • UIView 动画必须通过修改属性的真实值,才有动画效果。

1.1 block 方式

  • 设置控件位置、尺寸、透明度等的代码,放在 animateWithDuration: block 中,将自动以动画的方式改变。

        // 开始动画,动画持续时间 2 秒
        [UIView animateWithDuration:1.0 animations:^{
    
            // 设置动画结束后的效果值
    
            // 改变控件的位置和尺寸,改变后的位置或大小
            self.redView.frame = CGRectMake(150, 50, 50, 50);
    
        } completion:^(BOOL finished) {
    
            // 动画完成后的操作
    
            // 开始一个新的动画
            [UIView animateWithDuration:1.0 animations:^{
    
                // 改变控件的位置和尺寸,改变后的位置或大小
                self.redView.frame = CGRectMake(50, 150, 80, 80);
            }];
        }];
    • 效果

  • 弹簧效果的动画
        [UIView animateWithDuration:1.0
                              delay:0
             usingSpringWithDamping:0.2
              initialSpringVelocity:0
                            options:UIViewAnimationOptionCurveEaseInOut
                         animations:^{
    
            // SpringWithDamping: 弹性系数,越小弹簧效果越明显
    
            self.redView.frame = CGRectMake(150, 50, 50, 50);
    
        } completion:nil];
    • 效果

1.2 动画块方式

  • 设置控件位置、尺寸、透明度等的代码,放在 beginAnimations: 和 commitAnimations 之间,将自动以动画的方式改变。

        // 开始一个动画块
        [UIView beginAnimations:nil context:nil];
    
        // 动画设置
    
            // 设置动画时间
            [UIView setAnimationDuration:1.0];                                      // default = 0.2
    
            // 设置延时
            [UIView setAnimationDelay:0.0];                                         // 设置指定的时间后开始执行动画,default = 0.0
    
            // 设置动画执行节奏
            /*
                UIViewAnimationCurveEaseInOut,         // slow at beginning and end  开始和结束慢速,默认
                UIViewAnimationCurveEaseIn,            // slow at beginning          开始慢速
                UIViewAnimationCurveEaseOut,           // slow at end                结束慢速
                UIViewAnimationCurveLinear             //                            匀速
             */
            [UIView setAnimationCurve:UIViewAnimationCurveLinear];
    
            // 设置重复次数
            [UIView setAnimationRepeatCount:MAXFLOAT];                              // default = 0.0.  May be fractional
    
            // 设置是否自动返回,以动画的方式返回
            [UIView setAnimationRepeatAutoreverses:YES];                            // default = NO. used if repeat count is non-zero
    
            // 设置是否从当前状态开始动画
            [UIView setAnimationBeginsFromCurrentState:YES];                        // default = NO
    
            // 设置代理
            [UIView setAnimationDelegate:self];                                     // default = nil
    
            // 设置动画开始时执行的代理方法,自定义方法
            [UIView setAnimationWillStartSelector:@selector(startAnimations)];      // default = NULL
    
            // 设置动画结束时执行的代理方法,自定义方法
            [UIView setAnimationDidStopSelector:@selector(stopAnimations)];         // default = NULL
    
        // 动画之行后效果值
    
            // 设置透明度,改变后的透明度
            self.redView.alpha = 1.0;
    
            // 改变控件的位置和尺寸,改变后的位置或大小
            self.redView.frame = CGRectMake(150, 150, 80, 80);
    
        // 结束一个动画块
        [UIView commitAnimations];
    
        // 动画开始时执行的代理方法,自定义方法
        - (void)startAnimations {
    
            NSLog(@"startAnimations");
        }
    
        // 动画结束时执行的代理方法,自定义方法
        - (void)stopAnimations {
    
            NSLog(@"stopAnimations");
        }
    • 效果

1.3 形变属性方式

时间: 2024-09-26 12:49:16

iOS - UIView 动画的相关文章

iOS UIView动画详解(Objective-C)

    我在之前的一篇博客中<iOS UIView动画详解(Swift)>讲解了使用Swift来实现UIView类下面提供的多种动画效果,如位置动画.旋转动画.缩放动画.颜色动画.透明度动画等等.为了这个题目的完整性,今天我使用Objective-C来完全重写以上的所有的动画.项目案例已经上传至:https://github.com/chenyufeng1991/iOS-UIView-Animation  中的Animation-OC文件夹下,另一个目录下则是Swift实现的动画. (1)位置

iOS基础动画教程分享_IOS

iOS的动画多种多样,动画做的好的应用会更加吸引人,用起来也会更加炫目,本文介绍iOS几种基础动画,单个讲解便于理解,但真正使用时,结合起来用会看起来更加帅,这就看具体的应用场景和大家的想象力啦. 所有的基础动画都给予UIView一个基础的方法:animateWithDuration.这个方法可以包含一个代码块,里面设置要改变的东西,在执行的时候iOS会自动以动画的形式展现出来,代码如下: [UIView animateWithDuration:1 animations:^{ // 要执行的动作

iOS UIView常见属性方法小结_IOS

下面通过实例代码给大家详细介绍了iOS UIView常见属性方法,具体代码如下所示: UIView : UIResponder /** 通过一个frame来初始化一个UI控件 */ - (id)initWithFrame:(CGRect)frame; // YES:能够跟用户进行交互 @property(nonatomic,getter=isUserInteractionEnabled) BOOL userInteractionEnabled; // default is YES // 控件的一

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

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

iOS动画:UIView动画和CALayer动画(CABasicAnimation、CAKeyframeAnimation的使用)

iOS中的动画有两种实现方式,一种是UIView来实现动画,另一种动画是通过CALayer来实现,下面介绍两种动画的简单实现: 一.UIView动画的实现    UIView使用Context来实现动画 关键代码: 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 28 29 30 //参数1 动画名称 参数2 要实现动画的对象上下文           [UIView beginAnimations:

iOS开发:UIView动画详解

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

iOS&amp;amp;nbsp;动画总结—UIView动画

1.概述 UIKit直接将动画集成到UIView类中,实现简单动画的创建过程.UIView类定义了几个内在支持动画的属性声明,当这些属性发生改变时,视图为其变化过程提供内建的动画支持. 执行动画所需要的工作由UIView类自动完成,但仍要在希望执行动画时通知视图,为此需要将改变属性的代码包装到一个代码块中. 2.UIView动画具体创建方法 - (void)buttonPressed { //  交换本视图控制器中2个view位置     [self.view exchangeSubviewAt

【iOS开发】30多个iOS常用动画,带详细注释

30多个iOS常用动画,带详细注释 // // CoreAnimationEffect.h // CoreAnimationEffect // // Created by VincentXue on 13-1-19. // Copyright (c) 2013年 VincentXue. All rights reserved. // import   @interface CoreAnimationEffect : NSObject pragma mark - Custom Animation

IOS 30多个iOS常用动画,带详细注释

[cpp] view plaincopy //   //  CoreAnimationEffect.h   //  CoreAnimationEffect   //   //  Created by VincentXue on 13-1-19.   //  Copyright (c) 2013年 VincentXue. All rights reserved.   //       #import <Foundation/Foundation.h>       /**   !  导入Quart