UIView动画

UIView基础动画:

UIKit直接将动画集成到UIView类中,当内部的一些属性发生改变时,UIView将为这些改变提供动画支持。

UIView基础动画包括:UIView位置大小动画  UIView颜色动画 UIView透明度动画 UIView仿射翻转效果 UIView仿射旋转效果

改变位置的动画:

- (IBAction)changeFrame:(id)sender {
//    UIView动画 有开始beginAnimation 有结束commitAnimation
//    第一步:开始UIView动画
    [UIView beginAnimations:@"move" context:nil];
//    第二步:设置动画时长
    [UIView setAnimationDuration:3];
//    第三步:设置UIView代理
    [UIView setAnimationDelegate:self];
//    第四步:设置相关的对象的frame
    _textView.frame = CGRectMake(100, 100, 200, 100);
//    第五步:结束动画
    [UIView commitAnimations];
}

改变颜色的动画:

- (IBAction)changeColor:(id)sender {
    [UIView beginAnimations:@"color" context:nil];
    [UIView setAnimationDuration:2];
    [UIView setAnimationDelegate:self];
    _textView.backgroundColor = [UIColor orangeColor];
    [UIView commitAnimations];
}

改变透明度的动画:

- (IBAction)changeAlpha:(id)sender {
    [UIView beginAnimations:@"alpha" context:nil];
    [UIView setAnimationDuration:5];
    [UIView setAnimationDelegate:self];
    _textView.alpha = 0.2;
    [UIView commitAnimations];
}

仿射翻转效果的动画:

- (IBAction)rotationAction:(id)sender {
//    第一步:开始动画
    [UIView beginAnimations:@"rotation" context:nil];
//    第二步:设置时长
    [UIView setAnimationDuration:6.0f];
//    第三步:设置淡入的效果
    [UIView setAnimationCurve:UIViewAnimationCurveEaseInOut];
//    第四步:设置代理
    [UIView setAnimationDelegate:self];
//    第五步:设置翻转方向
    [UIView setAnimationTransition:UIViewAnimationTransitionCurlUp forView:_textView cache:YES];
//    第六步:提交
    [UIView commitAnimations];
}
仿射旋转效果的动画:

- (IBAction)transfromAction:(id)sender {
    [UIView beginAnimations:@"transform" context:nil];
    [UIView setAnimationDuration:3];
    [UIView setAnimationDelegate:self];
//    要进行旋转所以需要设置旋转角度
    CGAffineTransform trandform = CGAffineTransformMakeRotation(3 * M_PI);
//    设置旋转角度的对象
    [_textView setTransform:trandform];
    [UIView commitAnimations];
}

UIView实现动画效果的时候回调用代理方法,但是不需要遵循代理协议

//开始动画的方法
- (void)animationWillStart:(NSString *)animationID context:(void *)context {
    NSLog(@"ID = %@ context = %@", animationID, context);
}

//结束动画的方法
- (void)animationDidStop:(NSString *)animationID finished:(NSNumber *)finished context:(void *)context {
    NSLog(@"ID = %@ context = %@", animationID, context);
}

UIView的Block动画

1、简单的block动画

- (IBAction)easyBlockAnimation:(id)sender {
//    第一个参数:设置动画时长
//    第二个参数:动画要显示的效果
    __weak typeof(self)weakSelf = self;
//    [UIView animateWithDuration:3 animations:^{
////        改变imageView的Center位置
//        weakSelf.playImageView.center = self.view.center;
//    }];
//    带完成事件的
//    第一个参数:设置动画时长
//    第二个参数:动画要显示的效果
//    第三个参数:动画完成时进行的时间
    [UIView animateWithDuration:3 animations:^{
        weakSelf.playImageView.center = weakSelf.view.center;
    } completion:^(BOOL finished) {
        NSLog(@"位置改变了");
    }];
}

2、复杂的block动画

- (IBAction)complexBlockAnimation:(id)sender {
//    参数一:时长
//    参数二:动画的延迟时间
//    参数三:动画的枚举值
//    参数四:要实现的动画效果
//    参数五:动画完成的时候要做的事情
    __weak typeof(self)weakSelf = self;

    [UIView animateWithDuration:4 delay:1 options:UIViewAnimationOptionTransitionFlipFromTop animations:^{
        weakSelf.playImageView.frame = CGRectMake(10, 100, 100, 100);
    } completion:^(BOOL finished) {
        NSLog(@"变小");
    }];
}

3、关键帧动画

- (IBAction)keyFramesAnimation:(id)sender {
//    参数1:动画时长
//    参数2:延迟时间
//    参数3:枚举值动画效果
//    参数4:开始动画
    __weak typeof(self)weakSelf = self;

    [UIView animateKeyframesWithDuration:5 delay:1 options:UIViewKeyframeAnimationOptionRepeat animations:^{
//        在这个里边需要添加一个方法,即创建block的关键帧
//        参数1:帧动画的开始时间
//        参数2:帧动画的持续时间
//        参数3:真正想做的事
        [UIView addKeyframeWithRelativeStartTime:0 relativeDuration:0.5 animations:^{
//            在这个里边实现真正想要实现的效果
            weakSelf.playImageView.center = weakSelf.view.center;
        }];
    } completion:^(BOOL finished) {
        NSLog(@"改变中心点");
    }];
}

UIView的Spring动画

- (void)viewDidLoad {
    [super viewDidLoad];
    // Do any additional setup after loading the view from its nib.
    self.title = @"spring动画";
//    参数1:持续时间
//    参数2:延迟时间
//    参数3:类似弹簧的效果值0-1
//    参数4:初始化spring的一个速度
//    参数5:枚举值
//    参数6:开始动画
//    参数7:动画完成
    __weak typeof(self) weakSelf = self;
    [UIView animateWithDuration:3 delay:0.1 usingSpringWithDamping:1 initialSpringVelocity:10 options:UIViewAnimationOptionOverrideInheritedCurve animations:^{
        weakSelf.imageView.center = self.view.center;
    } completion:^(BOOL finished) {
        NSLog(@"GD擦浪嘿");
    }];
}



猜你喜欢

转载自blog.csdn.net/zzzzhy/article/details/51567861