泰兴市淘宝网站建设,全国小微企业名录查询,百seo排名优化,跨境电商怎么注册一、仿射变换--CGAffineTransform1.仿射变换#xff0c;一种基于二维坐标的转换功能。CGAffineTransform数据结构代表一个二维坐标系的转换矩阵。2.通过CGAffineTransform数据结构#xff0c;可以构造二维坐标系内的平移、伸缩、旋转矩阵。详情可以参看苹果开发文档中关于该数…一、仿射变换--CGAffineTransform1.仿射变换一种基于二维坐标的转换功能。CGAffineTransform数据结构代表一个二维坐标系的转换矩阵。2.通过CGAffineTransform数据结构可以构造二维坐标系内的平移、伸缩、旋转矩阵。详情可以参看苹果开发文档中关于该数据结构的解释。3.UIView类的一个属性transform该属性相对于bounds的中心位置该属性的类型为CGAffineTransform。初始化一个CGAffineTransform结构的矩阵然后赋值给这个属性就可以完成二维坐标系内的转换。4.要形成动画可以使用第三部分(UIView集成动画API)表述的方式通过指定该属性的前后状态来形成动画或者自己动态设置这个属性的值来形成动画。二、三维变换--CATransform3D1.CATransform3D数据结构代表一个三维坐标系的矩阵通过它可以构造三维坐标系内的平移、伸缩、旋转矩阵。2.UIView类的layer.transform属性该属性相对于bounds的中心位置。该属性的类型为CATransform3D。该属性的使用方式以及动画的形成同上一部分但是使用这个属性实现三维动画可能没那么好控制。三、UIView集成的动画API1.UIView集成了一系列的动画API。她的原理类似于flash动画的制作我们指定物体(控件)某些属性在动画中的开始和结束状态动画API就会自动生成中间的帧从而生成动画。2.使用示例(iOS4之前) //在这里指定控件的开始状态 //xxxxxxxxxx [UIView beginAnimations:context:]; [UIView setAnimationDuration:]; [UIView setAnimationCurve:]; [UIView setAnimationDelegate:]; [UIView setAnimationWillStartSelector:selector(animationDidStart:context)]; [UIView setAnimationDidStopSelector:selector(animationDidStop:finished:context)]; //在这里指定控件的结束状态 //xxxxxxxxx [UIView commitAnimations]; 代理方法的声明要使用如下方式 (void)animationDidStart:(NSString *)animationID context:(void *)context (void)animationDidStop:(NSString *)animationID finished:(NSNumber *)finished context:(void *)context3.使用示例(iOS4及以后)(1)从iOS4系统之后第2点提到整套API被废弃了应该使用block的方式来生成动画。API列表如下 animateWithDuration:delay:options:animations:completion: animateWithDuration:animations:completion: animateWithDuration:animations: transitionWithView:duration:options:animations:completion: transitionFromView:toView:duration:options:completion:(2)使用此套API的时候将控件的结束状态写在block中就可以了。4.因为此系列API只指定动画的开始和结束状态所以只能做一些有规律的动画否则API会不知道如何生成中间帧。常用动画举例平移伸缩旋转透明度变化颜色变化等等。四、核心动画1.比较常用的动画类CATransition和CAAnimation。(1)CATransition用于使用系统集成的动画。(2)CAAnimation用于实现自定义动画但是它是一个抽象类不能直接使用要子类化才能使用。类库中存在已经子类化的类可以使用比如CAKeyframeAnimation此类通过给一个layer的属性指定一组值包含开始、结束以及中间的一些用来修正动画的值然后根据这些值生成每一帧来生成动画。2.CATransition动画实现示例 CATransition *transition [CATransition animation]; transition.duration 0.8; transition.timingFunction [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut]; transition.type cube; transition.subtype kCATransitionFromRight; [xxxView.layer addAnimation:transition forKey:nil];3.CAAnimation使用示例 CGFloat perAngle M_PI / 64; CAKeyframeAnimation *keyFrameAnination [CAKeyframeAnimation animationWithKeyPath:transform]; [keyFrameAnination setDuration:2.0f]; [keyFrameAnination setTimingFunction:[CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut]]; [keyFrameAnination setRemovedOnCompletion:NO]; [keyFrameAnination setFillMode:kCAFillModeForwards]; [keyFrameAnination setDelegate:self]; NSMutableArray *values [[NSMutableArray alloc]initWithCapacity:10]; for (CGFloat clipRdn angle; clipRdn 0; clipRdn - perAngle) { CATransform3D transform CATransform3DMakeRotation(clipRdn, 0.0f, 1.0f, 0.0f); transform.m34 sin(clipRdn) / 4000.0f; transform.m14 -sin(clipRdn) / 4000.0f; [values addObject:[NSValue valueWithCATransform3D:transform]]; } [keyFrameAnination setValues:values]; [values release]; [self.imageView.layer addAnimation:keyFrameAnination forKey:animation];