基本动画CABasicAnimation - 完成之后闪回初始状态

基本动画CABasicAnimation 结束之后,默认闪回初始状态,那怎么解决呢?

position需要设备两个属性:

1     // MARK: - 结束后不要闪回去
2     anim.removedOnCompletion = NO;
3     anim.fillMode = kCAFillModeForwards;

设置之后,不会再闪回去,但其实控件的位置并未改变,还在原来的位置,只是“显示层”挪到了新位置。

可以通过动画的代理方法来实现:

    // MARK: - 通过代理方法,修正按钮的位置!
    // 这个代理写在了NSObject的分类中,不需要尊守任何协议
    anim.delegate = self;

实现代理方法:

 1 #pragma mark - 核心动画的代理方法
 2 // 核心动画开始
 3 - (void)animationDidStart:(CAAnimation *)anim {
 4
 5     NSLog(@"核心动画开始");
 6
 7 }
 8
 9 // 核心动画结束
10 - (void)animationDidStop:(CAAnimation *)anim finished:(BOOL)flag {
11
12 //    NSLog(@"核心动画结束!");
13     // 在核心动画结束后,将控件的真实位置挪过来!
14     _btn.center = CGPointMake(150, 500);
15
16     // 将layer中的动画移除掉,保证不会闪了!
17     [_btn.layer removeAllAnimations];
18 }

如果是transform.scale,transform.rotation,只需要设置anim.removedOnCompletion = NO;即可

常见属性:

 1 CABasicAnimation *basicAnimation = [CABasicAnimation animationWithKeyPath:@"position.y"];
 2
 3     basicAnimation.duration = 2;
 4
 5     // 这三个属性同时最多只能设置2个
 6     basicAnimation.fromValue = @100;
 7     basicAnimation.byValue = @50;
 8     basicAnimation.toValue = @500;
 9
10     basicAnimation.repeatCount = CGFLOAT_MAX;
11
12     basicAnimation.removedOnCompletion = NO;
13     basicAnimation.fillMode = kCAFillModeForwards;
14
15     [_btn.layer addAnimation:basicAnimation forKey:nil];
时间: 2024-10-14 12:09:21

基本动画CABasicAnimation - 完成之后闪回初始状态的相关文章

核心动画基础动画(CABasicAnimation)关键帧动画

1.在iOS中核心动画分为几类: 基础动画(CABasicAnimation) 关键帧动画(CAKeyframeAnimation) 动画组(CAAnimationGroup) 转场动画(CATransition) 2.CAAnimation:核心动画的基础类,不能直接使用,负责动画运行时间,速度的控制,本身实现了CAMediaTiming协议 3.CAPropertyAnimation:属性动画也是基类(通过属性进行动画设置,注意是动画属性),不能直接使用. CABasicAnimation:

iOS CoreAnimation 基础动画CABasicAnimation

本文参考:http://www.cnblogs.com/kenshincui/p/3972100.html#autoid-3-0-0总结的: Core Animation * iOS 核心动画的实现 CoreAnimation (包含在Quartz Core 框架中), 在iOS核心动画分为几类(基础动画, 关键帧动画, 动画组, 转场动画, ) CAAnimation : 核心动画的基础类, 不能直接用, 负责动画运行时间吗速度的控制, 实现了CAMediaTiming协议 CAPropert

Oracle闪回技术详解

概述: 闪回技术是Oracle强大数据库备份恢复机制的一部分,在数据库发生逻辑错误的时候,闪回技术能提供快速且最小损失的恢复(多数闪回功能都能在数据库联机状态下完成).需要注意的是,闪回技术旨在快速恢复逻辑错误,对于物理损坏或是介质丢失的错误,闪回技术就回天乏术了,还是得借助于Oracle一些高级的备份恢复工具如RAMN去完成(这才是Oracle强大备份恢复机制的精髓所在啊)  撤销段(UNDO SEGMENT) 在讲闪回技术前,需要先了解Oracle中一个逻辑结构--撤销段.因为大部分闪回技术

Flashback Database 闪回数据库

一.  Flashback Database 说明 Flashback Database 功能非常类似与 RMAN 的不完全恢复, 它可以把整个数据库回退到过去的某个时点的状态, 这个功能依赖于 Flashback log 日志. 比RMAN 更快速和高效. 因此 Flashback Database 可以看作是不完全恢复的替代技术. 但它也有某些限制:(1)Flashback Database 不能解决 Media Failure, 这种错误 RMAN 恢复仍是唯一选择.(2)如果删除了数据文

Oracle的闪回技术--闪回错误的DML操作

提交DML操作后,该操作使用的还原段就可以被其它对象使用了,为了保证闪回操作时这些数据仍然被保存在还原段中,可能需要重新设置undo_retention参数,表示一个事务提交后,该事务的数据必须保存在还原段中的时间:但是这也并不能完全保证指定的时间的数据一定能够被恢复,还原表空间没有足够的时间时,仍会覆盖要求保留的磁盘空间. 查看undo_retention的当前值: SQL> show parameter undo_retention NAME TYPE VALUE -------------

闪回之闪回表(flashback table)

背景知识 设置闪回数据库参数设置数据库闪回的三个参数:db_recovery_file_dest_size  闪回恢复区大小db_recovery_file_dest  闪回恢复区路径,该参数可以任意指定,闪回日志记录了数据库的前影像,该日志不会进行归档,一但停用数据库的闪回功能,该目录下的日志会自动清除db_flashback_retention_target  保留恢复最近多长时间的数据,单位为分钟.SQL> alter system set db_recovery_file_dest_si

Oracle 闪回技术

一.配置闪回数据库 1.数据库处于归档日志模式 SQL> select log_mode from v$database; LOG_MODE ------------ ARCHIVELOG 2.创建闪回恢复区 SQL> alter system set db_recovery_file_dest_size=10G; System altered. SQL> alter system set db_recovery_file_dest='D:\oracle\product\11.2.0\d

11G 闪回数据库

第一种场景 库是用来培训或测试环境的,测试完毕后恢复原来的样子 [email protected] odb>archive log list; Databaselog mode            No Archive Mode Automaticarchival             Disabled Archivedestination           USE_DB_RECOVERY_FILE_DEST Oldestonline log sequence      220 Curre

【读书笔记】oracle闪回技术

1.闪回技术有三种,分别是闪回数据库.闪回查询.闪回删除. 闪回数据库是把数据库恢复到某一个时间点:闪回查询是查询表的历史记录:闪回删除是把drop掉的表还原回来(表存在于recyclebin中). 2.三种闪回技术的限制: 闪回数据库受闪回日志大小的限制: 闪回查询受撤销保留时间限制: 闪回删除受表可用空间限制: 但可以通过配置Flashback Data Archive来无限期地存储行的前映像.(如何对表启用?) 3.闪回数据库的配置: 1)确保数据库处于归档模式中,如果不是归档模式则要进行