美文网首页iOS动画
UIViewAnimation动画

UIViewAnimation动画

作者: by小杰 | 来源:发表于2016-07-11 18:57 被阅读40次

    UIViewAnimation, 是UIView自带的最基础的动画, 使用方便, 但是效果有限.
    使用实例:

    
    #import "ViewController.h"
    
    @interface ViewController ()
    //声明一个控件属性
    @property (strong, nonatomic) UILabel *label;
    
    @end
    
    @implementation ViewController
    
    - (void)viewDidLoad {
        [super viewDidLoad];
        
        #1. 初始化该控件
        self.label = [[UILabel alloc] init];
    
        #2. 设置控件的位置大小
        self.label.bounds = CGRectMake(0, 0, 100, 100);
    
        #3. 锚点(默认位置为(0.5, 0.5), 即控件的中心点, 相对于自身来说), 控件锚点的位置, 与父视图的(0, 0)点重合
        self.label.layer.anchorPoint = CGPointMake(0, 0);
      
        #4.  设置背景颜色, 并添加到视图上
        self.label.backgroundColor = [UIColor redColor];
        [self.view addSubview:self.label];
        
    # 以上控件的设置, 是为了在动画执行时能够明显的表示出来
    ******************************************************************
    
        # 动画开始执行时触发的方法, 同下面的开始方法
        [UIView setAnimationWillStartSelector:@selector(startAC:)];
        
    }
    # 动画开始执行时触发的方法
    - (void)animationWillStart:(NSString *)animationID  context:(void *)context{
        
        NSLog(@"开始*********");
        
    }
    
    #通过Touch手势, 触发动画
    - (void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event{
        
        //1. 创建一个动画
        [UIView beginAnimations:nil context:nil];
        
        //2. 动画延迟设置
        [UIView setAnimationDelay:1];
        
        //3. 给动画添加代理(不遵循代理协议, 也能实现代理方法)
        [UIView setAnimationDelegate:self];
        
        //4. 给动画添加方法(动画结束后执行)
        [UIView setAnimationDidStopSelector:@selector(stopAc)];
        
        //5. 动画持续时间(完成动画所需时间)
        [UIView setAnimationDuration:2];
        
        //6. 设置动画是否会自动按原路径返回
        [UIView setAnimationRepeatAutoreverses:NO];
        
        //7. 设置动画移动的新位置
        self.label.frame = CGRectMake(100, 100, 100, 100);
        
        //8. 开始动画
        [UIView commitAnimations];
    
    }
    
    - (void)stopAc{
        
        NSLog(@"动画结束后执行的方法");
    }
    
    @end```
    
    >#*UIViewAnimation常用的方法
        # 创建一个动画, 传递上下文等信息
        + (void)beginAnimations:(nullable NSString *)animationID context:(nullable void *)context;
        # 设置完动画参数后, 开始动画
        + (void)commitAnimations;  
        # 设置代理, 代理可以遵循也可以不
        + (void)setAnimationDelegate:(nullable id)delegate;                 // default = nil
        # 动画将要开始时,触发的方法
        + (void)setAnimationWillStartSelector:(nullable SEL)selector;       // default = NULL. -animationWillStart:(NSString *)animationID context:(void *)context
        # 动画结束后执行的方法 
        + (void)setAnimationDidStopSelector:(nullable SEL)selector;         // default = NULL. -animationDidStop:(NSString *)animationID finished:(NSNumber *)finished context:(void *)context
        # 设置动画执行的持续时间
        + (void)setAnimationDuration:(NSTimeInterval)duration;              // default = 0.2
        # 设置动画开始执行的延迟时间
        + (void)setAnimationDelay:(NSTimeInterval)delay;                    // default = 0.0
        + (void)setAnimationStartDate:(NSDate *)startDate;                  // default = now ([NSDate date])
        # 设置动画块中的动画属性变化的曲线 ,动画进入/退出视图的效果
        + (void)setAnimationCurve:(UIViewAnimationCurve)curve;              // default = UIViewAnimationCurveEaseInOut
        # 设置动画执行的次数
        + (void)setAnimationRepeatCount:(float)repeatCount;                 // default = 0.0.  May be fractional
        # 设置动画是否会"按原动画路径执行返回的动画"
        + (void)setAnimationRepeatAutoreverses:(BOOL)repeatAutoreverses;    // default = NO. used if repeat count is non-zero
        # 设置动画从当前状态开始播放
        + (void)setAnimationBeginsFromCurrentState:(BOOL)fromCurrentState;  // default = NO. If YES, the current view position is always used for new animations -- allowing animations to "pile up" on each other. Otherwise, the last end state is used for the animation (the default).
    
    

    相关文章

      网友评论

        本文标题:UIViewAnimation动画

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