2016-1-10 组动画学习 动画实例

//
//  ViewController.m
//  车晓迪demo
//
//  Created by Mac on 16/1/11.
//  Copyright © 2016年 Mac. All rights reserved.
//

#import "ViewController.h"

@interface ViewController ()
@property (weak, nonatomic) IBOutlet UIImageView *circleView;

@end

@implementation ViewController

- (void)viewDidLoad {
    [super viewDidLoad];
    // Do any additional setup after loading the view, typically from a nib.
    // 添加三个扇形按钮
    for (int i = 0;  i< 3; i ++) {
        NSString *imgName = [NSString stringWithFormat:@"circle%d",i +1];
        UIButton *btn = [UIButton buttonWithType:UIButtonTypeCustom ];
        UIImage *img = [UIImage imageNamed:imgName];
        [btn setBackgroundImage:img forState:UIControlStateNormal];
        // 因为给定按钮图片的frame已经和背景图片的尺寸是对应好的,此处需要注意一下
        btn.frame = self.circleView.bounds;
        [self.circleView addSubview:btn];
    }

    // 向背景中添加中心按钮
    UIButton *centerBtn = [UIButton buttonWithType:UIButtonTypeCustom];
    [centerBtn setBackgroundImage:[UIImage imageNamed:@"home_btn_dealer_had_bind"] forState:UIControlStateNormal];
    // 添加进去
    [self.view addSubview:centerBtn];
    centerBtn.bounds = CGRectMake(0, 0, 112, 112);
    centerBtn.center = self.circleView.center;
    [centerBtn addTarget:self action:@selector(centerBtnClick:) forControlEvents:(UIControlEventTouchUpInside)];

}
- (void)centerBtnClick:(UIButton *)centerBtn
{
    CGFloat currentAlpha = self.circleView.alpha;
    if (currentAlpha  == 1) {
        self.circleView.alpha =0;
    }else{
        self.circleView.alpha =1;
    }
    // 创建组动画
    CAAnimationGroup *groupAni = [CAAnimationGroup animation];
    // 创建核心动画
      // 隐藏动画
    CABasicAnimation *opacityAni = [CABasicAnimation animation];
    opacityAni.keyPath = @"opacity";
    // 缩放动画
    CAKeyframeAnimation *scaleAni = [CAKeyframeAnimation animation];
    scaleAni.keyPath = @"transform.scale";
    // 旋转动画
    CABasicAnimation *rotationAni = [CABasicAnimation animation];
    rotationAni.keyPath = @"transform.rotation";

    if (currentAlpha == 1) {// 需要隐藏
        opacityAni.fromValue = @1;
        opacityAni.toValue = @0;
        scaleAni.values = @[@1,@1.2,@0];
        rotationAni.fromValue [email protected][@0];
        rotationAni.toValue = @[@(M_PI_4)];
    }else{// 需要显示
        opacityAni.fromValue = @0;
        opacityAni.toValue = @1;
        scaleAni.values = @[@0,@1.2,@1];
        rotationAni.fromValue =@[@(M_PI_4)];
        rotationAni.toValue = @[@0];

    }
    groupAni.animations = @[opacityAni,scaleAni,rotationAni];
    groupAni.duration = 2;
    [self.circleView.layer addAnimation:groupAni forKey:nil];

}

@end

时间: 2024-10-10 18:32:17

2016-1-10 组动画学习 动画实例的相关文章

android动画学习

android动画学习 转载自:http://www.open-open.com/lib/view/open1329994048671.html 3.0以前,android支持两种动画模式,tween animation,frame animation,在android3.0中又引入了一个新的动画系统:property animation,这三种动画模式在SDK中被称为property animation,view animation,drawable animation. 1. View An

Silverlight动画学习笔记(三):缓动函数

(一)定义: 缓动函数:可以将自定义算术公式应用于动画 (二)为什么要用缓动函数: 您可能希望某一对象逼真地弹回或其行为像弹簧一样.您可以使用关键帧动画甚至 From/To/By 动画来大致模拟这些效果,但可能需要执行大量的工作,并且与使用算术公式相比动画的精确性将降低. (三)实例讲解: 1 <UserControl x:Class="AnimationStudy.EasingFunctionAnimation" 2 xmlns="http://schemas.mic

?网页图表Highcharts实践教程之标签组与载入动画

?网页图表Highcharts实践教程之标签组与载入动画 Highcharts标签组 在图表的大部分元素都提供了标签功能.但很多时候,我们需要额外说明一些信息.这个时候借助原有的图表元素的标签功能就不是很方便.Highcharts为用户提供了标签组功能.使用该功能可以在图表区的任意位置添加一个或者多个标签,如图3.9所示.该图表中在副标题前面增加一个标签,用以说明数据列展现的年份. 图3.9  标签组的应用 Highcharts标签组的结构 在Highcharts中,标签组使用labels组件实

【总结整理】JQuery基础学习---动画

jQuery中隐藏元素的hide方法 让页面上的元素不可见,一般可以通过设置css的display为none属性.但是通过css直接修改是静态的布局,如果在代码执行的时候,一般是通过js控制元素的style属性,这里jQuery提供了一个快捷的方法.hide()来达到这个效果 $elem.hide() 提供参数: .hide( options ) 当提供hide方法一个参数时,.hide()就会成为一个动画方法..hide()方法将会匹配元素的宽度,高度,以及不透明度,同时进行动画操作 快捷参数

iOS:核心动画之动画组CAAnimationGroup

CAAnimationGroup——动画组 动画组,是CAAnimation的子类,可以保存一组动画对象,将CAAnimationGroup对象加入层后,组中所有动画对象可以同时并发运行 属性说明: –animations:用来保存一组动画对象的NSArray 默认情况下,一组动画对象是同时运行的,也可以通过设置动画对象的beginTime属性来更改动画的开始时间 具体的实例如下: 实现功能:在创建的动画组中存入两个基本动画,一个是沿着Z轴旋转360度的动画,另一个是放大2倍的动画,这两个动画并

AngularJS学习--- 动画操作 (Applying Animations) ngAnimate step 12

1.切换目录 git checkout step-12 npm start 2.效果图 这里在点击右边的缩略图时,会有一个很明显的从下向上的动画过程. 3.代码实现: step11和step12之间的代码差异:https://github.com/angular/angular-phonecat/compare/step-11...step-12 Dependencies(依赖的js库): bower.json { "name": "angular-seed", &

Android动画学习——Tween Animation

目录 目录 Android动画学习 Tween Animation scale动画调节尺寸 alpha动画调节透明度 rotate动画旋转 translate动画平移 Android动画学习 android中动画分为3种: Tween Animation:通过对场景里的对象不断做图像变换(平移.缩放.旋转)产生的动画效果,即是一种渐变动画. Frame Animation:顺序播放事先做好的图像,是一种画面转换动画. Property Animation:属性动画,通过动态地改变对象的属性从而达

ios 动画学习的套路 (二)

有它们俩你就够了! 说明:下面有些概念我说的不怎么详细,网上实在是太多了,说了我觉得也意义不大了!但链接都给大家了,可以自己去看,重点梳理学习写动画的一个过程和一些好的博客! (一) 说说这两个三方库,Canvas 和 POP 这里有详细的说明了它们俩的优缺点,我们就不在粘贴复制浪费时间了,链接在下面! iOS动画库Pop和Canvas各自的优势和劣势是什么? 下面先说说这两库的基本情况完了再说说他们的使用! Canvas -- iOS 动画库 :安装就在git上看就行,点前面的就能到git链接

[ css 动画 animation ] animation新增动画属性的实例演示

<!DOCTYPE html> <html lang='zh-cn'> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <title>[ animation ] 新增动画属性的实例演示</title> <meta http-equiv='description' content='this