《30天精通iPhone手机编程》-Day23-移动的方块

        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];    
}


你可能感兴趣的:(编程,quartz,iPhone,animation,手机,UIView)