iOS 动画的实现方式和代码

#import "QuartzCore/QuartzCore.h"


@interface mainVC()

{

    BOOL isPause;

    UIButton *controlButton;

}

-(void)animationOfUIKit;

-(void)animationOfBlock;

-(void)animationOfCABasicAnimation;

-(void)animationOfCAKeyframeAnimation;

-(void)animationOfCAKeyframeAnimationPath;


@end


@implementation mainVC


- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil

{

    self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];

    if (self) {

        // Custom initialization

    }

    return self;

}


-(void)viewDidLoad

{

    [super viewDidLoad];

    

    controlButton = [UIButton buttonWithType:UIButtonTypeSystem];

    [controlButton setFrame:CGRectMake(20, 200, 60, 40)];

    [controlButton addTarget:self

                      action:@selector(clickControlButton:)

            forControlEvents:UIControlEventTouchUpInside];

    [controlButton setTitle:@"暂停" forState:UIControlStateNormal];

    [self.view addSubview:controlButton];

    

    //使用上下文设置UIKit动画

    //[self animationOfUIKit];

    

    //通过使用代码块设置动画

    //[self animationOfBlock];

    

    //使用CABasicAnimation

    //[self animationOfCABasicAnimation ];

    

    //使用CAKeyframeAnimation动画

    //[self animationOfCAKeyframeAnimation];

    

    //路径动画

    [self animationOfCAKeyframeAnimationPath ];

    

    

}


-(void)animationOfUIKit

{

    UIView *redView=[[UIView alloc]initWithFrame:CGRectMake(10, 10, 100, 100)];

    redView.backgroundColor=[UIColor redColor];

    

    [self.view addSubview:redView];

    //开始动画

    [UIView beginAnimations:@"test" context:nil];

    //动画时长

    [UIView setAnimationDuration:1];

    /*

     *要进行动画设置的地方

     */

    

    redView.backgroundColor=[UIColor blueColor];

    redView.frame=CGRectMake(50, 50, 200, 200);

    redView.alpha=0.5;

    

    

    //动画结束

    [UIView commitAnimations];

}

-(void)animationOfBlock

{

    //初始化一个View,用来显示动画

    UIView *redView=[[UIView alloc]initWithFrame:CGRectMake(10, 10, 100, 100)];

    redView.backgroundColor=[UIColor redColor];

    

    [self.view addSubview:redView];


    [UIView animateWithDuration:1 //时长

                          delay:0 //延迟时间

                        options:UIViewAnimationOptionTransitionFlipFromLeft//动画效果

                     animations:^{

                         

                         //动画设置区域

                         redView.backgroundColor=[UIColor blueColor];

                         redView.frame=CGRectMake(50, 50, 200, 200);

                         redView.alpha=0.5;

                         

                     } completion:^(BOOL finish){

                       //动画结束时调用

                       //............

                     }];

    

    

}


-(void)animationOfCABasicAnimation

{

    //创建一个CABasicAnimation对象

    CABasicAnimation *animation=[CABasicAnimation animation];

    //设置颜色

    animation.toValue=(id)[UIColor blueColor].CGColor;

    //动画时间

    animation.duration=1;

    //是否反转变为原来的属性值

    animation.autoreverses=YES;

    //animation添加到图层的layer中,便可以播放动画了。forKey指定要应用此动画的属性

    [self.view.layer addAnimation:animation forKey:@"backgroundColor"];

    

}


-(void)animationOfCAKeyframeAnimation

{

    //初始化一个View,用来显示动画

    UIView *redView=[[UIView alloc]initWithFrame:CGRectMake(10, 30, 100, 100)];

    redView.backgroundColor=[UIColor redColor];

    

    [self.view addSubview:redView];

    

    CAKeyframeAnimation *animation=[CAKeyframeAnimation animationWithKeyPath:@"test"];

    //设置属性值

    animation.values=[NSArray arrayWithObjects:

                      (id)self.view.backgroundColor,

                      (id)[UIColor yellowColor],

                      (id)[UIColor greenColor],

                      (id)[UIColor blueColor],nil];

    animation.duration=3;

    animation.autoreverses=YES;

    //把关键帧添加到layer

    [redView.layer addAnimation:animation forKey:@"backgroundColor"];

}

-(void)animationOfCAKeyframeAnimationPath

{

    //初始化一个View,用来显示动画

    UIView *redView=[[UIView alloc]initWithFrame:CGRectMake(10, 30, 20, 20)];

    redView.backgroundColor=[UIColor redColor];

    redView.tag = 111;

    

    [self.view addSubview:redView];

    

    CAKeyframeAnimation *ani=[CAKeyframeAnimation animation];

    CGMutablePathRef aPath=CGPathCreateMutable();

    

    CGPathMoveToPoint(aPath, nil, 20, 20);

    CGPathAddCurveToPoint(aPath, nil

                          160, 30,

                          220, 220

                          240, 380);

    

    ani.path=aPath;

    ani.duration=10;

    ani.repeatCount=HUGE_VAL;

    ani.timingFunction=[CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseIn];

    ani.rotationMode=@"auto";

    [redView.layer addAnimation:ani forKey:@"position"];

    

}


//暂停layer上面的动画

- (void)pauseLayer:(CALayer*)layer

{

    CFTimeInterval pausedTime = [layer convertTime:CACurrentMediaTime() fromLayer:nil];

    layer.speed = 0.0;

    layer.timeOffset = pausedTime;

}


//继续layer上面的动画

- (void)resumeLayer:(CALayer*)layer

{

    CFTimeInterval pausedTime = [layer timeOffset];

    layer.speed = 1.0;

    layer.timeOffset = 0.0;

    layer.beginTime = 0.0;

    CFTimeInterval timeSincePause = [layer convertTime:CACurrentMediaTime() fromLayer:nil] - pausedTime;

    layer.beginTime = timeSincePause;

}


- (void)pauseSoccer

{

    isPause = YES;

    [controlButton setTitle:@"继续" forState:UIControlStateNormal];

    [self pauseLayer:[self.view viewWithTag:111].layer];

}


- (void)resumeSoccer

{

    isPause = NO;

    [controlButton setTitle:@"暂停" forState:UIControlStateNormal];

    [self resumeLayer:[self.view viewWithTag:111].layer];

}


- (void)clickControlButton:(id)sender {

    if (isPause) {

        [self resumeSoccer];

    }else{

        [self pauseSoccer];

    }

}


@end

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
智慧校园建设方案旨在通过融合先进技术,如物联网、大数据、人工智能等,实现校园的智能化管理与服务。政策的推动和技术的成熟为智慧校园的发展提供了基础。该方案强调了数据的重要性,提出通过数据的整合、开放和共享,构建产学研资用联动的服务体系,以促进校园的精细化治理。 智慧校园的核心建设任务包括数据标准体系和应用标准体系的建设,以及信息化安全与等级保护的实施。方案提出了一站式服务大厅和移动校园的概念,通过整合校内外资源,实现资源共享平台和产教融合就业平台的建设。此外,校园大脑的构建是实现智慧校园的关键,它涉及到数据中心化、数据资产化和数据业务化,以数据驱动业务自动化和智能化。 技术应用方面,方案提出了物联网平台、5G网络、人工智能平台等新技术的融合应用,以打造多场景融合的智慧校园大脑。这包括智慧教室、智慧实验室、智慧图书馆、智慧党建等多领域的智能化应用,旨在提升教学、科研、管理和服务的效率和质量。 在实施层面,智慧校园建设需要统筹规划和分步实施,确保项目的可行性和有效性。方案提出了主题梳理、场景梳理和数据梳理的方法,以及现有技术支持和项目分级的考虑,以指导智慧校园的建设。 最后,智慧校园建设的成功依赖于开放、协同和融合的组织建设。通过战略咨询、分步实施、生态建设和短板补充,可以构建符合学校特色的生态链,实现智慧校园的长远发展。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值