Quartz2D(平面图形)引擎,在程序中通过Quartz2D API(平面图像应用程序接口)可以获得平面图形的制作编辑入口。
把程序中的窗口UIWindow控件比喻是一台电视机,视图UIView控件是电视机中不同的频道。
QuartzCore类的框架负责处理动态变化的对象。iphone os环境下动态变化的对象分为三层:Back Layer(后部图层),Middle Layer(中部图层),Front Layer(前部图层),其中Back Layer为程序定义所在视图,显示背景,Middle Layer为程序显示静态图片,Front Layer为程序定义动态图像。
在Front Layer中的动态图像的构建中一般分为三个环节,Animation Terget Object(动画对象实体),Types of Animation(动画类型),Animation Timing(动画时机).
CATransaction是动画核心机制,在iphone os环境下的动态变化的对象层中自动运作和更新,过程中每个层都必须是进行动态变化交互的一部分,为图像动态变化交互提供嵌套支持。
Day23AppDelegate.h
//在应用程序开始后重新自定义用户化点,在显示窗口加入显示视图 - (void)applicationDidFinishLaunching:(UIApplication *)application { //创建窗口边框,定义其边框界限为屏幕中的边框属性 CGRect windowRect = [[UIScreen mainScreen] applicationFrame]; //创建窗口对象,定义其边框属性值为windowRect对象 UIWindow *window = [[UIWindow alloc] initWithFrame:windowRect]; //定义窗口对象的颜色为绿色 [window setBackgroundColor:[UIColor greenColor]]; //定义程序的窗口为window对象 [self setWindow:window]; //创建第一个视图边框 CGRect changeRect1 = { 80.0, 100.0, 160.0, 100.0 }; //创建视图对象 ChangeRectView *changeView1 = [[ChangeRectView alloc] initWithFrame:changeRect1]; //颜色设置为绿色 [changeView1 setBackgroundColor:[UIColor darkGrayColor]]; //创建第二个视图边框 CGRect changeRect2 = { 80.0, 300.0, 80.0, 50.0 }; //创建视图对象 ChangeRectView *changeView2 = [[ChangeRectView alloc] initWithFrame:changeRect2]; //颜色设置为红色 [changeView2 setBackgroundColor:[UIColor redColor]]; [window addSubview: changeView2]; [window addSubview: changeView1]; [window makeKeyAndVisible]; //调用视图左右转动的矩形动画方法 [changeView1 ChangeView]; //调用视图向右上方移动并改变尺寸大小的矩形动画方法 [changeView2 FlyView]; [window release]; [changeView1 release]; [changeView2 release]; }
ChangeRectView.m
//视图左右转动的矩形动画方法 - (void)ChangeView { //定义视图的左右转动的矩形动画开始 [UIView beginAnimations:nil context:NULL]; //定义视图的动画持续时间为0.25秒 [UIView setAnimationDuration:0.25]; //UIViewAnimationCurveEaseInOut为缓慢进出动画效果 [UIView setAnimationCurve:UIViewAnimationCurveEaseInOut]; //动画重复2.5次 [UIView setAnimationRepeatCount:2.5]; //动画自动重复播放 [UIView setAnimationRepeatAutoreverses:YES]; //实现0.75弧度旋转视图 [self setTransform:CGAffineTransformMakeRotation(-0.75)]; //提交动画,结束视图的左右转动的矩形动画 [UIView commitAnimations]; } //视图向右上方移动并改变尺寸大小的矩形动画方法 - (void)FlyView { //定义视图的右上方移动并改变尺寸大小的矩形动画开始 [UIView beginAnimations:nil context:NULL]; //定义视图动画持续的时间值 [UIView setAnimationDuration:1.75]; //定义视图动画时间曲线值,UIViewAnimationCurveLinear表示平滑动画效果 [UIView setAnimationCurve:UIViewAnimationCurveLinear]; //定义缩放转变比例,宽、高缩小为原来的一半 [self setTransform:CGAffineTransformMakeScale(2.0, 2.0)]; //动画的位置转变坐标 [self setTransform:CGAffineTransformMakeTranslation(120.0, -290.0)]; //提交动画 [UIView commitAnimations]; }