动画片

动画

先插句题外话:今天知道了结构体转对象用 NSValue from


动画是提高用户交互的神器,主要有UIView动画和CALayer动画.我们经常用到的还是UIView的Block动画  一定要弄清楚参数.


UIView的属性动画

#pragma mark   UIView - PorpertyAnimations
- (void)handlePorpertyAnimation
{
    //开始动画
    [UIView beginAnimations:nil context:nil];
    
    //设置动画执行的时间(时间单位是秒)
    [UIView setAnimationDuration:1];
    
    
        //设置动画重复的次数
    [UIView setAnimationRepeatCount:2];
    
    //设置动画是否反转
    [UIView setAnimationRepeatAutoreverses:YES];
    
    //设置动画的变化曲线
    [UIView setAnimationCurve:UIViewAnimationCurveEaseIn];
    
    
    //设置UIView旋转
    self.redView.transform = CGAffineTransformRotate(self.redView.transform, M_PI) ;
    
    //设置代理人
    [UIView setAnimationDelegate:self];
    
    //设置动画结束的时候执行的操作
    [UIView setAnimationDidStopSelector:@selector(restorePresentState)];
    
    //设置动画从当前状态开始
    [UIView setAnimationBeginsFromCurrentState:YES];
    
    //指定需要做动画的视图的属性
    self.redView.center = CGPointMake(self.redView.center.x, self.redView.center.y + 200);
    //改变视图的透明度
    self.redView.alpha = 0.0;
 [UIView commitAnimations];
必须记得提交


过渡动画

//处理过度动画

- (void)handleTransitionAnimation
{
    //单一视图的过度动画
//    [UIView transitionWithView:self.redView duration:1.0 options:    UIViewAnimationOptionTransitionFlipFromLeft animations:^{
//        self.redView.transform = CGAffineTransformScale(self.redView.transform, 0.9, 0.9);
//    } completion:^(BOOL finished) {
//        self.redView.transform = CGAffineTransformScale(self.redView.transform, 10/9.0, 10/9.0);
//    }];
    
        //两个视图之间的过度动画
    UIView *greenView = [[UIView alloc]initWithFrame:self.redView.frame];
    greenView.backgroundColor = [UIColor greenColor];
    
    [UIView transitionFromView:self.redView toView:greenView duration:1.0 options:UIViewAnimationOptionTransitionFlipFromLeft completion:^(BOOL finished) {
        [UIView transitionFromView:greenView toView:self.redView duration:1.0 options:UIViewAnimationOptionTransitionFlipFromLeft completion:^(BOOL finished) {
  
        }];
    }];
    
}

           //Block动画样式4  弹簧效果
    //参数1:动画执行的时间;参数2:动画延迟执行的时间 参数3:代表弹簧的振动频率(数值越小振动频率越高) 参数4:开始的速度   参数5:动画的效果(是否反转,重复,变化曲线)  参数6:执行的动画操作,参数7:动画执行完成的操作
    
    [UIView animateWithDuration:1.0 delay:0 usingSpringWithDamping:0.5 initialSpringVelocity:10 options:UIViewAnimationOptionCurveEaseIn animations:^{
        self.bannerBtn.center = CGPointMake(self.bannerBtn.center.x, self.bannerBtn.center.y + 100);
    } completion:^(BOOL finished) {
        self.bannerBtn.center = CGPointMake(self.bannerBtn.center.x, self.bannerBtn.center.y - 100);
    }];


CALayer动画:

    //默认状态下视图的基准点和锚点与视图的中心点重合,视图旋转的时候必须围绕一个点进行旋转,但是这个点必须保证视图的锚点和基准点刚好在该位置重合.锚点的坐标范围(0~1之间)
    
    //因为基准点是相对父视图坐标而言,所以锚点必须主动向基准点靠齐.


UIView和CALayer这两种动画的区别就是UIView会真正的改变frame,而CALayer只是改变了视图效果,视图并没有真正的改变. 

版权声明:本文为博主原创文章,未经博主允许不得转载。