浅谈编者对CGAffineTransform坐标系统变换以及UIView的属性动画的认识和理解
坐标系统变换通过transform属性来改变
·CGAffineTransformScale //对视图比例缩放
·CGAffineTransformRotate //对视图做变焦旋转
·CGAffineTransformTranslate //对视图在原来的位置上做平移
以view对象举例
//平移x方向上向右移动100,y方向上向上移动100
view2.transform = CGAffineTransformMakeTranslation(-100, 100);
//旋转M_PI是180度,此为顺时针旋转30度
view2.transform = CGAffineTransformMakeRotation(M_PI / 6);
//比例缩放,水平方向置为原来的二分之一,竖直方向上置为原来的两倍
view2.transform = CGAffineTransformMakeScale(0.5, 2);
视图属性动画-动画属性
UIView类的很多属性都被设计为动画。动画的属性是指当属性从一个值变为另一个值的时候,可以半自动地支持动画。但是必须告诉UIKit希望执行什么类型的动画,动画一旦开始,Core Animation就会全权负责。UIView对象中支持动画的属性有如下几个:
frame : 改变视图的尺寸和位置
bounds :改变视图的尺寸
center :改变视图的中心位置
transform :翻转或者放缩视图
alpha :改变视图的透明度
backgroundColor :改变视图的背景颜色
contentStetch :改变视图内容如何拉伸
UIView属性动画-代理设置
可以为动画分配一个委托,并通过该委托接受动画开始和结束的消息。当需要在动画 开始前和动画结束后立即执行其它任务时,可能就需要设置委托。
通过UIView调用setAnimationDelegate:方法来设置委托,并通过 setAnimationWillStartSelector:和setAnimationDidStopSelector:方法来指定接收 消息的选择器方法。消息处理方法的形式如下:
- (void)animationWillStart:(NSString *)animationID context:(void *)context;
- (void)animationDidStop:(NSString *)animationID finished:(NSNumber*)finished context:(void *)context;
animationID : 应用程序提供的字符串,用于标识一个动画块中的动画。
context :也是应用程序提供的对象,用于向委托对象传递额外的信息。
setAnimationDidStopSelector:选择器方法还有一个参数,即一个布尔值,如果动画顺利完成,没有被其它动画取消或停止,则该值为YES。
UIView属性动画-动画参数配置
setAnimationStartDate:设置动画在commitAnimations方法返回之后 的发生日期。
setAnimationDelay:设置实际发生动画和commitAnimations方法返回 的时间点之间的间隔
setAnimationDuration:设置动画持续的秒数。
setAnimationCurve:设置动画过程的相对速度,比如动画可能在启示阶段逐渐加速,而在结束阶段逐渐减速,或者整个过程都保持相同的速度
setAnimationRepeatCount:设置动画的重复次数。
setAnimationRepeatAutoreverses:指定动画在到达目标值时是否自动 反向播放。
所有支持动画的属性在动画块中发生的变化都会形成动画。如果希望让动画块中发生的某些变化不产生动画效果,可以通过setAnimationsEnabled:方法来暂时禁止动画,在完成修改后才重新激活动画。在调用setAnimationsEnabled: 方法并传入NO值之后,所有的改变都不会产生动画效果,直到用YES值再次调用这个方法或者提交整个动画块时,动画才会恢复。可以用areAnimationsEnabled方法来确定当前是否激活动画