iphone里的动画过渡
2012-02-13 20:59
225 查看
1:首先获取当前的图形上下文:
CGContextRef context = UIGraphicsGetCurrentContext();
2:接着设置一些动画属性用于开始动画:
[UIView beginAnimations:nil context:context];
[UIView setAnimationCurve:UIViewAnimationCurveEaseInOut];
[UIView setAnimationDuration:1.0];
3:然后设置想要过度的对象的最终状态.
[big setFrame:SMALLRECT];
[big setAlpha:0.5];
[little setFrame:BIGRECT];
[little setAlpha:1.0];
4:最后提交动画,这样一个动画就会自动生成了
[UIView commitAnimations];
其中,setAnimationCurve是设置动画的方式,他有下面集中方式:
UIViewAnimationCurveEaseInOut //开始和结束时动画效果比较慢
UIViewAnimationCurveEaseIn //开始动画效果比较慢
UIViewAnimationCurveEaseOut //结束动画效果比较慢
UIViewAnimationCurveLinear //平滑的动画效果
而,setAnimationDuration则是设置动画的持续时间.
下面是两个UIView之间的动画过度
// Start Animation Block
//CGContextRef context = UIGraphicsGetCurrentContext();
CGContextRef context = nil;
[UIView beginAnimations:nil context:context];
[UIView setAnimationTransition: UIViewAnimationTransitionFlipFromLeft forView:[self superview] cache:YES];
[UIView setAnimationCurve:UIViewAnimationCurveEaseInOut];
[UIView setAnimationDuration:1.0];
// Animations
[[self superview] exchangeSubviewAtIndex:0 withSubviewAtIndex:1];
// Commit Animation Block
[UIView commitAnimations];
页面之间的过度主要依靠UIView setAnimationTransition:
forView:
cache:
这个方法以及 exchangeSubviewAtIndex:withSubviewAtIndex:
前者通过UIView静态方法设置过度的动画种类,后者实现真正的过度函数掉用.种类有如下五种:
typedef enum {
UIViewAnimationTransitionNone,
UIViewAnimationTransitionFlipFromLeft,
UIViewAnimationTransitionFlipFromRight,
UIViewAnimationTransitionCurlUp,
UIViewAnimationTransitionCurlDown,
} UIViewAnimationTransition;
除了这种简单的动画方式外,其实还有一种利用QuartzCore来做过度动画.不同的地方在于,这个过度动画作用于层,换句话说,他动画直接做用于整个UIView,而不像UIView的动画,可以作用于UIView局部或本身.当UIView作用与本身时,实际上也就相当于是对层的动画了.
CATransition *animation = [CATransition animation];
[animation setDelegate:self];
[animation setDuration:1.0f];
[animation setTimingFunction:UIViewAnimationCurveEaseInOut];
[animation setType: kCATransitionMoveIn];
[animation setSubtype: kCATransitionFromBottom];
[[self superview] exchangeSubviewAtIndex:0 withSubviewAtIndex:1];
[[[self superview] layer] addAnimation:animation forKey:@"transitionViewAnimation"];
setDuration:和UIView中的动画效果一样,持续时间.
setTimingFunction:是动画的种类,和UIView一样,比如匀速动画,快速开始结束等.
setType:是指定动画的类型,他有:
kCATransitionFade (淡入淡出来补给动画)
kCATransitionMoveIn(从一个方向覆盖的方式来补给动画)
kCATransitionPush(推送的方式来补给动画)
kCATransitionReveal(一个试图展现出另外另外一个试图的方式)
当除了第一种方式外(淡入淡出),可以通过setSubType:来制定动画的方向(因为这些动画都是直接着用于层的,所以相当于只有试图间的切换过渡).动画方向有4个:
kCATransitionFromRight
kCATransitionFromLeft
kCATransitionFromTop
kCATransitionFromBottom
CGContextRef context = UIGraphicsGetCurrentContext();
2:接着设置一些动画属性用于开始动画:
[UIView beginAnimations:nil context:context];
[UIView setAnimationCurve:UIViewAnimationCurveEaseInOut];
[UIView setAnimationDuration:1.0];
3:然后设置想要过度的对象的最终状态.
[big setFrame:SMALLRECT];
[big setAlpha:0.5];
[little setFrame:BIGRECT];
[little setAlpha:1.0];
4:最后提交动画,这样一个动画就会自动生成了
[UIView commitAnimations];
其中,setAnimationCurve是设置动画的方式,他有下面集中方式:
UIViewAnimationCurveEaseInOut //开始和结束时动画效果比较慢
UIViewAnimationCurveEaseIn //开始动画效果比较慢
UIViewAnimationCurveEaseOut //结束动画效果比较慢
UIViewAnimationCurveLinear //平滑的动画效果
而,setAnimationDuration则是设置动画的持续时间.
下面是两个UIView之间的动画过度
// Start Animation Block
//CGContextRef context = UIGraphicsGetCurrentContext();
CGContextRef context = nil;
[UIView beginAnimations:nil context:context];
[UIView setAnimationTransition: UIViewAnimationTransitionFlipFromLeft forView:[self superview] cache:YES];
[UIView setAnimationCurve:UIViewAnimationCurveEaseInOut];
[UIView setAnimationDuration:1.0];
// Animations
[[self superview] exchangeSubviewAtIndex:0 withSubviewAtIndex:1];
// Commit Animation Block
[UIView commitAnimations];
页面之间的过度主要依靠UIView setAnimationTransition:
forView:
cache:
这个方法以及 exchangeSubviewAtIndex:withSubviewAtIndex:
前者通过UIView静态方法设置过度的动画种类,后者实现真正的过度函数掉用.种类有如下五种:
typedef enum {
UIViewAnimationTransitionNone,
UIViewAnimationTransitionFlipFromLeft,
UIViewAnimationTransitionFlipFromRight,
UIViewAnimationTransitionCurlUp,
UIViewAnimationTransitionCurlDown,
} UIViewAnimationTransition;
除了这种简单的动画方式外,其实还有一种利用QuartzCore来做过度动画.不同的地方在于,这个过度动画作用于层,换句话说,他动画直接做用于整个UIView,而不像UIView的动画,可以作用于UIView局部或本身.当UIView作用与本身时,实际上也就相当于是对层的动画了.
CATransition *animation = [CATransition animation];
[animation setDelegate:self];
[animation setDuration:1.0f];
[animation setTimingFunction:UIViewAnimationCurveEaseInOut];
[animation setType: kCATransitionMoveIn];
[animation setSubtype: kCATransitionFromBottom];
[[self superview] exchangeSubviewAtIndex:0 withSubviewAtIndex:1];
[[[self superview] layer] addAnimation:animation forKey:@"transitionViewAnimation"];
setDuration:和UIView中的动画效果一样,持续时间.
setTimingFunction:是动画的种类,和UIView一样,比如匀速动画,快速开始结束等.
setType:是指定动画的类型,他有:
kCATransitionFade (淡入淡出来补给动画)
kCATransitionMoveIn(从一个方向覆盖的方式来补给动画)
kCATransitionPush(推送的方式来补给动画)
kCATransitionReveal(一个试图展现出另外另外一个试图的方式)
当除了第一种方式外(淡入淡出),可以通过setSubType:来制定动画的方向(因为这些动画都是直接着用于层的,所以相当于只有试图间的切换过渡).动画方向有4个:
kCATransitionFromRight
kCATransitionFromLeft
kCATransitionFromTop
kCATransitionFromBottom
相关文章推荐
- iphone用Animation实现动画效果
- HTML和CSS高级指南整理翻译(08) 一 过渡与动画
- Andorid Transtion FrameWork(Android 过渡动画)
- iPhone开发之启动画面及动画
- 如何使用JavaScript控制CSS Animations(动画)和Transitions(过渡)
- 几行代码实现神奇移动的过渡动画
- 过渡动画
- 详解iPhone中UIView动画各种表现方式 参考文档 (上)
- display:none无transition动画过渡;height:auto的transition动画;
- 动画效果,过渡效果
- css3动画以及过渡
- CSS平滑过渡动画:transition
- CSS3制作各种平滑过渡的动画效果
- Android 5.x的Activity过渡动画.
- 实现Android5.0过渡动画兼容库
- iPhone 如何使用UIImageView播放动画,并停留在之后一张图片并添加播放结束时的事件
- IPhone之UIView中动画
- css3过渡动画transition
- 动画--过渡所需时间 transition-duration