IOS 如何暂停和恢复CALayer上的动画
2013-04-16 15:24
399 查看
coreAnimation的动画是存在于CALayer上面的,有些时候需要突然暂停某个组件的动画效果,同时保留当前动画的状态,
如果是用removeAnimation会显得很突兀,不够平滑,所以可以利用设置动画速度和设置一个时间偏移量来暂停动画:
[html] view
plaincopy
//用来暂停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;
}
如果是用removeAnimation会显得很突兀,不够平滑,所以可以利用设置动画速度和设置一个时间偏移量来暂停动画:
[html] view
plaincopy
//用来暂停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;
}
相关文章推荐
- iOS --- 如何暂停和继续CALayer上的动画
- 如何暂停和恢复CALayer上的动画
- 如何暂停和恢复CALayer上的动画
- IOS 暂停和恢复CALayer上的动画(转)
- 如何暂停和恢复CALayer上的动画
- CALayer动画的暂停,恢复,以及结束时候的回调
- CALayer的上动画的暂停和恢复
- 如何在ios中运用core animation暂停和继续动画
- iOS动画的暂停与恢复
- IOS/Swift 暂停和恢复图层动画
- 暂停、恢复CALayer 动画
- iOS CAlayer 动画进入后台或者 调用viewWillDisappear viewDidDisappear后动画暂停问题的解决办法
- IOS ViewController切换动画以及如何返回
- [ios开发技巧之]动画Animation中断后的恢复
- iOS开发中如何给UITableViewCell添加动画
- cisco的ios被删除,如何通过tftp恢复
- IOS--CALayer实现,界限、透明度、位置、旋转、缩放组合动画(转)
- iOS开发网络篇—文件下载(暂停和恢复)
- 三 iOS之 CALayer的隐式动画
- iOS动画:UIView动画和CALayer动画(CABasicAnimation、CAKeyframeAnimation的使用)