在ios中运用core animation暂停和继续动画
来源:互联网 发布:中银淘宝校园卡办理 编辑:程序博客网 时间:2024/05/21 07:56
- 暂停和继续动画的核心代码如下:
- <pre name="code" class="cpp">//暂停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;
- }</pre><br>
- <pre></pre>
- <p>附上完整代码</p>
- <p></p>
- <p class="p1">AnimationPauseViewController.h</p>
- <pre name="code" class="cpp">#import <UIKit/UIKit.h>
- @interface AnimationPauseViewController : UIViewController {
- UIImageView *soccer;
- BOOL isPause;
- UIButton *controlButton;
- }
- @property (nonatomic, retain) IBOutlet UIImageView *soccer;
- - (IBAction)clickControlButton:(id)sender;
- @property (nonatomic, retain) IBOutlet UIButton *controlButton;
- @end</pre><br>
- <p></p>
- <p class="p1">AnimationPauseViewController.m</p>
- <p></p><pre name="code" class="cpp">#import "AnimationPauseViewController.h"
- #import <QuartzCore/QuartzCore.h>
- @implementation AnimationPauseViewController
- @synthesize controlButton;
- @synthesize soccer;
- - (void)dealloc
- {
- [soccer release];
- [controlButton release];
- [super dealloc];
- }
- - (void)didReceiveMemoryWarning
- {
- // Releases the view if it doesn't have a superview.
- [super didReceiveMemoryWarning];
- // Release any cached data, images, etc that aren't in use.
- }
- - (void)addAnimations
- {
- //让足球来回移动
- CABasicAnimation *translation = [CABasicAnimation animationWithKeyPath:@"position"];
- translation.fromValue = [NSValue valueWithCGPoint:CGPointMake(24, 240)];
- translation.toValue = [NSValue valueWithCGPoint:CGPointMake(320- 24, 240)];
- translation.duration = 2;
- translation.repeatCount = HUGE_VALF;
- translation.autoreverses = YES;
- //让足球来回转动
- CABasicAnimation *rotation = [CABasicAnimation animationWithKeyPath:@"transform.rotation.z"];
- //kCAMediaTimingFunctionLinear 表示时间方法为线性,使得足球匀速转动
- rotation.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionLinear];
- rotation.toValue = [NSNumber numberWithFloat:4 * M_PI];
- rotation.duration = 2;
- rotation.repeatCount = HUGE_VALF;
- rotation.autoreverses = YES;
- [soccer.layer addAnimation:rotation forKey:@"rotation"];
- [soccer.layer addAnimation:translation forKey:@"translation"];
- }
- #pragma mark - View lifecycle
- - (void)viewDidLoad
- {
- [super viewDidLoad];
- [self addAnimations];
- }
- - (void)viewDidUnload
- {
- [self setSoccer:nil];
- [self setControlButton:nil];
- [super viewDidUnload];
- }
- - (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
- {
- // Return YES for supported orientations
- return (interfaceOrientation == UIInterfaceOrientationPortrait);
- }
- //暂停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:soccer.layer];
- }
- - (void)resumeSoccer
- {
- isPause = NO;
- [controlButton setTitle:@"暂停" forState:UIControlStateNormal];
- [self resumeLayer:soccer.layer];
- }
- - (IBAction)clickControlButton:(id)sender {
- if (isPause) {
- [self resumeSoccer];
- }else{
- [self pauseSoccer];
- }
- }
- @end</pre><br>
- <br>
- <p></p>
- 在ios中运用core animation暂停和继续动画
- 在ios中运用core animation暂停和继续动画
- 在ios中运用core animation暂停和继续动画
- 如何在ios中运用core animation暂停和继续动画
- 动画暂停和继续
- ios Core Animation 动画
- iOS开发 实现动画的暂停和继续播放
- iOS --- 如何暂停和继续CALayer上的动画
- iOS动画:Core Animation概述
- IOS动画Core Animation详解
- IOS动画Core Animation详解
- IOS动画Core Animation详解
- IOS动画Core Animation详解
- iOS动画之Core Animation
- IOS核心动画 - Core Animation
- IOS动画Core Animation详解
- iOS-Core Animation 核心动画
- IOS动画Core Animation详解
- do...while(0)的妙用
- 遮盖与投影
- wxWidgets UI笔记
- Android开源
- 当java swing界面启动无法正常显示,当调整JFrame大小后才能全部显示子组件
- 在ios中运用core animation暂停和继续动画
- hdu4415 Assassin’s Creed
- 赖勇浩:推荐《Linux 多线程服务器端编程》
- “啃老”族,蹭住多久才算久?
- hdu4414 Finding crosses
- [二次开发]dede会员列表调用(企业、个人)
- 9.3 折半查找
- clip:rect('top', 'right', 'bottom', 'left')
- Jackson多态类型数据的反序列化