IOS动画与绘图

目录:UIView动画 子视图翻转动画

UIImageView动画
CATransition动画
Core Graphics绘图:(线、矩形、曲

线、文字、图片)

CALayer

       核心动画:(关键帧动画、
            单一动画、

组动画)

1.UIView动画

(1)设置代理(viewController)

动画开始: beginAnimations

设置动画加减速方式: setAnimationCurve

设置持续时长: setAnimationDuration

设置动画重复次数: setAnimationRepeatCount

设置动画是否做反向操作: setAnimationRepeatAutoreverses:YES

设置视图的变化,提交动画 :[UIView commitAnimations];

(2)Block动画

eg:

[UIView animateWithDuration:2

animations:^{

baseView.alpha = 0;

} completion:^(BOOL finished) {

NSLog(@"end");

}];

2.UIImage动画

①创建 UIImageView对象

②创建一个数组,存放多个UIImage对象

③为UIImageView对象设置动画数组:imgView.animationImages=mArr;

④设置时长,开始动画:startAnimating

3.CATransition动画

①创建 CATransition对象

②设置对象属性(时长Duration、速率TimingFunction、类型type、方向subType)

类型有私有API:

//    animation.type = @"cube"             //立方体效果

//    animation.type = @"suckEffect"       //收缩效果,如一块布被抽走
//    animation.type = @"oglFlip"          //翻转效果
//    animation.type = @"rippleEffect"     //滴水效果
//    animation.type = @"pageCurl"         //向上翻一页

//    animation.type = @"pageUnCurl"       //向下翻一页

③为UIView对象添加动画,添加到它的Layer上

为导航栏添加动画(立方体旋转效果)

[self.navigationController.view.layer addAnimation:transition forKey:@"animation"];

4.绘图

调用父类方法,程序运行时自动调用

- (void)drawRect:(CGRect)rect{

[super drawRect:rect];

绘画不同图形,都需要先获取画布

//图像上下文,获取画布,他是一个结构体指针

CGContextRef context = UIGraphicsGetCurrentContext();

都可以设置画笔属性:

//设置虚线
    CGFloat arr[] = {10,5};
    CGContextSetLineDash(context, 0, arr, 2);
   
    //设置画笔的宽度
    CGContextSetLineWidth(context, 2);
   
    //设置画笔颜色
    CGContextSetStrokeColorWithColor(context, [UIColor yellowColor].CGColor);
   
    //设置填充色

CGContextSetFillColorWithColor(context, [UIColor blackColor].CGColor);

最后都要保存,添加到画布

//保存路径,添加绘图
    CGContextDrawPath(context, kCGPathEOFillStroke);

(1)画直线

//获取画笔,设置起点
    CGContextMoveToPoint(context, 20, 20);
   
    //移动画笔(可多次移动,连接成不同图形)

CGContextAddLineToPoint(context, 220, 20);

(2)画矩形

//绘制矩形

CGContextAddRect(context, CGRectMake(20, 20, 100, 100));

(3)画曲线

//    //绘制贝塞尔曲线1
//    CGContextMoveToPoint(context, 10, 100);

//    CGContextAddCurveToPoint(context, 55, 0, 145, 200, 200, 100);

//    //绘制贝塞尔曲线2
//    CGContextMoveToPoint(context, 10, 200);
//    CGContextAddQuadCurveToPoint(context, 105, 0,200, 200)  ;

//绘制扇形

CGContextAddArc(context, 100, 100, 100, arc(90), arc(0), 1);

(4)画图像(Image)

可使用PrintCode软件画,自动生成代码,粘贴过去

5.绘制阴影

创建UIView对象

设置圆角(必须是layer层)

////    view.layer.cornerRadius = 10;

////    view.layer.masksToBounds = YES;

***设置圆角时不会显示阴影

可以设置边框,阴影颜色( view.layer.shadowColor)、阴影透明度( view.layer.shadowOpacity)、图片( view.layer.contents)

6.关键帧动画

创建路径,在路径上添加运动轨迹

//路径
    CGMutablePathRef path = CGPathCreateMutable();
   
    //为路径添加一个运动轨迹

CGPathAddRect(path, nil, CGRectMake(10, 10, 200, 200));

创建关键帧动画

CAKeyframeAnimation *animation = [CAKeyframeAnimation animationWithKeyPath:@"position"];

设置动画的加减速方式、时长、重复次数、路径( animation.path = path;

创建单一动画 CABasicAnimation对象,旋转

basicAnimation.fromValue = @0;

basicAnimation.toValue = @(2 * M_PI);

设置组动画,可以将上面创建的关键帧动画和单一动画添加进去,如下,实现两种动画同时进行

//组动画
    CAAnimationGroup *animationGroup = [CAAnimationGroup animation];
   
    //往组里添加两个动画
    animationGroup.animations = @[animation,basicAnimation];
   
    animationGroup.duration = 2;
    animationGroup.repeatCount = 1000;
   
    [lView.layer addAnimation:animationGroup forKey:@"animationGroup"];

时间: 2024-10-26 11:15:44

IOS动画与绘图的相关文章

IOS动画总结

IOS动画总结 http://blog.sina.com.cn/s/blog_611b9d9d01015dkm.html (2012-06-01 14:50:32) 转载▼ 标签: 杂谈 分类: IOS 一.基本方式:使用UIView类的UIViewAnimation扩展 + (void)beginAnimations:(NSString *)animationID context:(void *)context; // 开始准备动画+ (void)commitAnimations; // 运行

IOS动画(Core Animation)总结 (参考多方文章)

一.简介 iOS 动画主要是指Core Animation框架.官方使用文档地址为:Core Animation Guide. Core Animation是IOS和OS X平台上负责图形渲染与动画的基础框架.Core Animation可以作用与动画视图或者其他可视元素,为你完成了动画所需的大部分绘帧工作.你只需要配置少量的动画参数(如开始点的位置和结束点的位置)即可使用Core Animation的动画效果.Core Animation将大部分实际的绘图任务交给了图形硬件来处理,图形硬件会加

iOS动画(Core Animation)使用

一.简介 IOS 动画主要是指Core Animation框架.官方使用文档地址为:Core Animation Guide. Core Animation是IOS和OS X平台上负责图形渲染与动画的基础框架.Core Animation可以作用与动画视图或者其他可视元素,为你完成了动画所需的大部分绘帧工作.你只需要配置少量的动画参数(如开始点的位置和结束点的位置)即可使用Core Animation的动画效果.Core Animation将大部分实际的绘图任务交给了图形硬件来处理,图形硬件会加

iOS动画大全

一.简介 IOS 动画主要是指Core Animation框架.官方使用文档地址为:Core Animation Guide.Core Animation是IOS和OS X平台上负责图形渲染与动画的基础框架.Core Animation可以作用与动画视图或者其他可视元素,为你完成了动画所需的大部分绘帧工作.你只需要配置少量的动画参数(如开始点的位置和结束点的位置)即可使用Core Animation的动画效果.Core Animation将大部分实际的绘图任务交给了图形硬件来处理,图形硬件会加速

如何解决IOS 动画中 Autolayout 与View Transforms的冲突

IOS 的动画放大与缩小,并非按照找它的中心点放大和缩小,而是左上角 .我分析了下原来是Autolayout 与View Transforms的冲突造成的. - (void) addSubviewWithZoomInAnimation:(UIView*)view duration:(float)secs option:(UIViewAnimationOptions)option { // first reduce the view to 1/100th of its original dimen

iOS动画开发之一——UIViewAnimation动画的使用

iOS动画开发之一--UIViewAnimation动画的使用 一.简介 一款APP的成功与否,除了完善的功能外,用户体验也占有极大的比重,动画的合理运用,可以很好的增强用户体验.iOS开发中,常用的动画处理有UIView动画编程和核心动画编程,其中UIView动画使用简便,开发中应用十分广泛.这篇博客,主要讨论UIView的动画使用. 二.UIView动画的几个方法 + (void)animateWithDuration:(NSTimeInterval)duration animations:

iOS动画的要素

1)iOS动画的模型:三层树模型: https://developer.apple.com/library/content/documentation/Cocoa/Conceptual/CoreAnimation_guide/CoreAnimationBasics/CoreAnimationBasics.html#//apple_ref/doc/uid/TP40004514-CH2-SW12 Layer Trees Reflect Different Aspects of the Animati

iOS动画浅汇

转自:http://www.cocoachina.com/ios/20160311/15660.html 在iOS开发中,制作动画效果是最让开发者享受的环节之一.一个设计严谨.精细的动画效果能给用户耳目一新的效果,吸引他们的眼光 —— 这对于app而言是非常重要的.我们总是追求更为酷炫的实现,如果足够仔细,我们不难发现一个好的动画通过步骤分解后本质上不过是一个个简单的动画实现.本文就个人搜集的一些动画相关的理论和实践知识做个小结,不足之处请勿见怪. 理论 UIview VS UIlayer UI

iOS 动画Animation-4-5: CALayer子类:CATransformLayer

首先说明:这是一系列文章,参考本专题下其他的文章有助于你对本文的理解. 今天周六,希望大家都有一个愉快的周末. 今天来讲解一下CATransformLayer:CATransformLayer是一个专门用来创建三维视图的一个layer,也可以说是多个layer的集合.他没有多余的API,可以这么说,他只是承载了子layer. 下面就看一个例子,通过例子来讲解. 国际惯例先上图: 图就是这样的纯手工打造. 先创建一个CATransformLayer对象: var transformLayer =