美文网首页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