UIView封装的动画

一:view实现动画和layer实现动画的区别

    一般动画是操作在view上面的,对layer上面的动画进行了封装,比较的简单

    图层动画缺点:1、会反弹;2、看到的动画都是假象,图层的属性一直没有变过,所以会反弹

    图层动画都是假象,在动画执行过程中,图层的position属性一直没有改变过,图层的任何属性都不会损失

     开发中图层动画用的比较多的是转场动画,其他的一般使用view动画,尽量使用view的动画,view做不了的动画使用layer来做,比如抖动效果view动画不好做,就使用图层来做

    图层动画比较有价值的是:CAKeyframeAnimation帧动画和CATransition转场动画,CABasicAnimation没有太大的用处(是假象,不是真的改变了layer的相关属性)

二、layer动画

#pragma make layer动画
- (void)testLayerAnimation
{
    CABasicAnimation *anim = [CABasicAnimation animation];
    anim.keyPath = @"position";
    anim.toValue = [NSValue valueWithCGPoint:CGPointMake(200, 100)];
    anim.duration = 2.0;
    //layer的position属性值是没有变动的,结束的时候需要手动的留着最后一次的动画状态
    anim.removedOnCompletion = NO;
    anim.fillMode = kCAFillModeForwards;
    
    [self.myview.layer addAnimation:anim forKey:nil];
    
}

三、view动画方法一,比较的麻烦,不采用,了解

#pragma make view动画
- (void)testViewAnimation1
{
    [UIView beginAnimations:nil context:nil];
    //这个动画监听动画结束,动画结束的时候调用代理(当前控制器)的animationStop
    //比较的麻烦
    [UIView setAnimationDelegate:self];
    [UIView setAnimationDidStopSelector:@selector(animationStop)];
    self.myview.center = CGPointMake(200, 200);
    [UIView commitAnimations];    
}
- (void)animationStop
{
    //动画执行结束的时候调用
}

四、block方法实现view动画

- (void)testViewAnimation2
{
//    block动画,相对testViewAnimation1方法比较简单
    [UIView animateWithDuration:1.0 animations:^{
        self.myview.center = CGPointMake(200, 200);

    } completion:^(BOOL finished) {
        
    }];
    
}

五、view实现转场动画

@property (weak, nonatomic) IBOutlet UIImageView *iconView;

@property (nonatomic, assign) int  index;//标记当前图片的下标

- (void)testViewAnimation3
{
    self.index++;
    if (self.index == 3) {
        self.index = 0;
    }
    NSString *filename = [NSString stringWithFormat:@"%d.jpg",self.index + 1];
    self.iconView.image = [UIImage imageNamed:filename];
    
     //view实现转场动画
    [UIView transitionWithView:self.iconView duration:1.0 options:UIViewAnimationOptionTransitionFlipFromTop animations:^{
        //animations,转场动画的时候还可以做其他的动画
    } completion:nil];
    
}

 

posted on 2015-05-15 14:34  快乐加油站789  阅读(158)  评论(0编辑  收藏  举报

导航