IOS 动画的各种实现方法
#import "ViewController.h"
#import <QuartzCore/QuartzCore.h>
@interface ViewController ()
@end
@implementation ViewController
- (void)viewDidLoad
{
[super viewDidLoad];
//创建一个
UIView *view=[[UIView alloc]init];
view.backgroundColor=[UIColor redColor];
[self.view addSubview:view];
view.tag=1001;
//top 200 dowm 200 left 40 right 40
[view setTranslatesAutoresizingMaskIntoConstraints:NO];
NSArray *constraintH= [NSLayoutConstraint constraintsWithVisualFormat:@"H:|-40-[view]-40-|" options: 0 metrics:Nil views:NSDictionaryOfVariableBindings(view)];
NSArray *constraintV=[NSLayoutConstraint constraintsWithVisualFormat:@"V:|-200-[view(>=30)]-200-|" options:0 metrics:nil views:NSDictionaryOfVariableBindings(view)];
[self.view addConstraints:constraintH];
[self.view addConstraints:constraintV];
UIButton *button=[UIButton buttonWithType:UIButtonTypeRoundedRect];
[self.view addSubview:button];
[button setTitle:@"开始动画" forState:UIControlStateNormal];
[button setTranslatesAutoresizingMaskIntoConstraints:NO];
NSArray *contraintButtonH=[NSLayoutConstraint constraintsWithVisualFormat:@"H:|-40-[button(>=100)]-40-|" options:0 metrics:nil views:NSDictionaryOfVariableBindings(button)];
NSArray *contraintButtonV=[NSLayoutConstraint constraintsWithVisualFormat:@"V:[button(30)]-20-[view]" options:0 metrics:nil views:NSDictionaryOfVariableBindings(button,view)];
[self.view addConstraints:contraintButtonH];
[self.view addConstraints:contraintButtonV];
[button addTarget:self action:@selector(didClickAnimationButton:) forControlEvents:UIControlEventTouchUpInside];
// Do any additional setup after loading the view, typically from a nib.
}
-(void)didClickAnimationButton:(UIButton *)button
{
//获取要承载动画的视图..
UIView *redView=[self.view viewWithTag:1001];
/*
//使用uiview类方法--1
[UIView animateWithDuration:0.25 delay:0 options:UIViewAnimationOptionCurveEaseInOut animations:^{
//视图的最终状态
CGFloat r=arc4random()%1000/1000.f;
CGFloat g=arc4random()%1000/1000.f;
CGFloat b=arc4random()%1000/1000.f;
redView.backgroundColor=[UIColor colorWithRed:r green:g blue:b alpha:1.0f];
//加旋转
// redView.transform=CGAffineTransformMakeRotation(M_PI_2*r);
} completion:^(BOOL finished) {
NSLog(@"finished....");
}];
*/
/*
//使用UIView类方法2
//开始设置动画
[UIView beginAnimations:nil context:nil];
//设置过渡效果是否从当前状态开始启动,否则为当前视图的最终状态开始启动
[UIView setAnimationBeginsFromCurrentState:YES];
//设置过渡效果的进度,慢入慢出,慢入,慢出,线性4中
[UIView setAnimationCurve:UIViewAnimationCurveEaseInOut];
//设置过渡效果对否延迟
[UIView setAnimationDelay:0];
//设置过渡效果的过渡时间
[UIView setAnimationDuration:0.25f];
//设置过渡效果是否自动恢复
[UIView setAnimationRepeatAutoreverses:YES];
//设置过渡效果是否重复出现
[UIView setAnimationRepeatCount:1.5];
//设置
[UIView setAnimationDelegate:self];
[UIView setAnimationWillStartSelector:@selector(animationStart)];
[UIView setAnimationDidStopSelector:@selector(animationStop)];
CGFloat x=arc4random()%100+100;
CGFloat y=arc4random()%100+100;
redView.center=CGPointMake(x, y );
// button.center=CGPointMake(x, y );
// [button layoutIfNeeded];
//提交过度动画效果
[UIView commitAnimations];
*/
/*
//使用quartzCore框架内的对象--3
//实例化过度对象
CATransition *animation=[CATransition animation];
//设置过度对象的时间
animation.duration=0.5f;
//设置过度对象的类型
animation.type=kCATransitionFade;
//设置过度对象的子类型
//animation.subtype=
[redView.layer addAnimation:animation forKey:nil];
redView.layer.opacity=0.0f;//设置透明度
*/
/*
CABasicAnimation *animation=[CABasicAnimation animationWithKeyPath:@"anchorPoint"];
// /设置过度对象的时间间隔
animation.duration=0.5f;
//设置过度对象的开始值
animation.fromValue=[NSValue valueWithCGPoint:CGPointMake(0.5, 0.5)];
animation.toValue=[NSValue valueWithCGPoint:CGPointMake(1.0, 1.0)];
//将过度对象添加到视图层上
[redView.layer addAnimation:animation forKey:nil];
//设置视图层的最终状态
redView.layer.anchorPoint=CGPointMake(1.0f, 1.0f);
*/
/*
// keyframe
CAKeyframeAnimation *animation=[CAKeyframeAnimation animationWithKeyPath:@"position"];
//设置过度对象时间间隔
animation.duration=1;
//设置过度对象的中间过度状态
CGMutablePathRef path = CGPathCreateMutable();
CGPathMoveToPoint(path, nil, 110, 200);
CGPathAddQuadCurveToPoint(path, nil, 150, 250, 200, 200);
animation.path=path;
//将过度对象添加到视图
[redView.layer addAnimation:animation forKey:nil];
*/
}
-(void)animationStart
{
NSLog(@"begin-------------------");
}
-(void)animationStop
{
NSLog(@"end--++++++++++++++++++++++++++++");
}
IOS 动画的各种实现方法的更多相关文章
- ios 动画效果CATransition笔记
初学ios开发,很多概念还不清楚,所以只有边学边做例子.又怕学了后面忘了前面,因此用自己的博客来纪录自己的学习历程,也是对自己学习不要懈怠做个监督. 刚学ios做动画效果.因为ios封装得很好,实现i ...
- (转)iOS动画Core Animation
文章转载:http://blog.sina.com.cn/s/blog_7b9d64af0101b8nh.html 在iOS中动画实现技术主要是:Core Animation. Core Animat ...
- 解析 iOS 动画原理与实现
这篇文章不会教大家如何实现一个具体的动画效果,我会从动画的本质出发,来说说 iOS 动画的原理与实现方式. 什么是动画 动画,顾名思义,就是能“动”的画.人的眼睛对图像有短暂的记忆效应,所以当眼睛看到 ...
- IOS动画隐式,显式,翻页
// ViewController.m // IOS动画0817 // // Created by 张艳锋 on 15/8/17. // Copyright (c) 2015年 张艳锋. Al ...
- iOS动画篇:UIView动画
iOS的动画效果一直都很棒很,给人的感觉就是很炫酷很流畅,起到增强用户体验的作用.在APP开发中实现动画效果有很多种方式,对于简单的应用场景,我们可以使用UIKit提供的动画来实现. UIView动画 ...
- iOS动画原理
1. iOS动画原理 本质:动画对象(这里是UIView)的状态,基于时间变化的反应 分类:可以分为显式动画(关键帧动画和逐帧动画)和隐式动画 关键帧和逐帧总结:关键帧动画的实现方式,只需要修改某个属 ...
- iOS 动画基础
原文:http://www.cnblogs.com/lujianwenance/p/5733846.html 今天说一下有关动画的基础,希望能帮助到一些刚接触iOS动画或者刚开始学习iOS的同学, ...
- IOS动画总结
IOS动画总结 一.基本方式:使用UIView类的UIViewAnimation扩展 + (void)beginAnimations:(NSString *)animationID context ...
- IOS 动画专题 --iOS核心动画
iOS开发系列--让你的应用“动”起来 --iOS核心动画 概览 通过核心动画创建基础动画.关键帧动画.动画组.转场动画,如何通过UIView的装饰方法对这些动画操作进行简化等.在今天的文章里您可以看 ...
随机推荐
- hdu----(1950)Bridging signals(最长递增子序列 (LIS) )
Bridging signals Time Limit: 5000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) ...
- 下载模板,上传EXCEL
说道SAP里对EXCEL操作的大概就是上传,下载,显示了... 下载:(文档是通过SMW0上传的)注:如果下载的时候需要填充EXCEL的值,...请参考另一篇文档,OLE CALL METHOD CL ...
- Java script基础
Java script基础 Js的每个语句后面都要有分号. <script type="text/java script">所有JS内容</script> ...
- Objective-C:Foundation框架-常用类-NSDictionary
与NSString.NSArray一样,NSDictionary是不可变的,其对应可变类型为NSMutableDictionary.其用法如下: #import <Foundation/Foun ...
- synchronized和static synchronized的比较
群里讨论的一个问题,网上别人已经贴出了很详细的说明,这里补充记录下,后面加入个人测试代码. 起因:1月份的时候看群里讨论一道问题,问题内容如下: 一个日本作者-结成浩的<java多线程设计模式& ...
- Windows内核对象
1. 内核对象 Windows中每个内核对象都只是一个内存块,它由操作系统内核分配,并只能由操作系统内核进行访问,应用程序不能在内存中定位这些数据结构并直接更改其内容.这个内存块是一个数据结构,其成员 ...
- 安卓/res/menu/的使用
<?xml version="1.0" encoding="utf-8"?> <menu xmlns:android="http:/ ...
- eclipse debug 过滤一些包
eclipse debug java程序的时候, 我们按F5的时候,常常会进入java自带类库里,这些类库并不是我们需要debug的代码,这样会影响debug的效率,我们可以在eclipse里设置,过 ...
- [js]多个物体的运动
与单个的区别:得知道哪个在动,所以运动函数需要两个参数,出了目标iTarget之外,还要obj.另外需要多个计数器,否则当一个还没运动完就移入另一个物体会发生卡壳 window.onload=func ...
- cordova 5.0 白名单
最新的cordova 5.0 更新了白名单机制,增强了安全性,但是也给我们在开发中带来了很多问题: 当你引入谷歌.百度地图时,会出现 Failed to load resource -- 解决办法: ...