iOS:CALayer核心动画层上绘图
在CALayer上绘图:
//创建子层(使用默认的锚点)
CALayer *subLayer = [[CALayer alloc]init]; subLayer.bounds = CGRectMake(,,, ); subLayer.position = self.view.center; subLayer.backgroundColor = [[UIColor redColor]CGColor];
//设置圆角半径,设置为50,此时的子层为圆形
subLayer.cornerRadius = ; [self.view.layer addSublayer:subLayer];
//设置层的代理
subLayer.delegate = self;
//只有发送setNeedsDisplay这个消息时才会调用代理方法
[subLayer setNeedsDisplay];
#pragma mark -CALayer的代理方法
-(void)drawLayer:(CALayer *)layer inContext:(CGContextRef)ctx
{
//画矩形
CGContextAddRect(ctx, CGRectMake(, , , ));
//设置颜色
CGFloat components[] = {0.0,1.0,0.0,1.0};
CGContextSetStrokeColor(ctx, components); //这种方式也可以设置颜色
//CGContextSetStrokeColorWithColor(ctx,[[UIColor greenColor]CGColor]);
//旋转坐标系
CGContextScaleCTM(ctx, , -);
CGContextTranslateCTM(ctx, , -); //画笑脸图像
UIImage *image = [UIImage imageNamed:@"1.png"];
CGContextDrawImage(ctx, CGRectMake(, , , ), [image CGImage]); //画路径
CGContextDrawPath(ctx, kCGPathStroke);
}


#import "ViewController.h"
#import "MyLayer.h" @interface ViewController () @end @implementation ViewController - (void)viewDidLoad {
[super viewDidLoad]; //创建子层
MyLayer *myLayer = [[MyLayer alloc]init];
myLayer.bounds = CGRectMake(, , , ); myLayer.position = CGPointMake(, );
//设置子层背景色为灰色
myLayer.backgroundColor = [[UIColor grayColor]CGColor]; [self.view.layer addSublayer:myLayer]; [myLayer setNeedsDisplay];
}
@end
#import "MyLayer.h"
#import <UIKit/UIKit.h> @implementation MyLayer
//重写这个方法
-(void)drawInContext:(CGContextRef)ctx
{ //绘制矩形
CGContextAddRect(ctx, CGRectMake(, , , )); //第一种设置颜色方式:
//设置颜色空间(选择配色方案:RGB,红、绿、蓝)
CGColorSpaceRef colorspace = CGColorSpaceCreateDeviceRGB();
CGContextSetStrokeColorSpace(ctx, colorspace);
//数组中四个内容:前三个分别为红绿蓝颜色值,后一个为透明度
CGFloat components[] = {0.0,1.0,0.0,1.0};
CGContextSetStrokeColor(ctx, components); //这是另一种比较简单的设置颜色的方式
//CGContextSetStrokeColorWithColor(ctx, [[UIColor greenColor]CGColor]); //绘制描边路径
CGContextDrawPath(ctx, kCGPathStroke); //释放create出的属性,防止内存泄露
CGColorSpaceRelease(colorspace);
}
@end

iOS:CALayer核心动画层上绘图的更多相关文章
- iOS:CALayer核心动画层
CALayer:核心动画层 简介: Core Animation 是跨平台的,支持iOS环境和Mac OS X环境 学习核心动画之前,需要先理解CALayer,因为核心动画操作的对象不是UIView, ...
- iOS学习——核心动画
iOS学习——核心动画 1.什么是核心动画 Core Animation(核心动画)是一组功能强大.效果华丽的动画API,无论在iOS系统或者在你开发的App中,都有大量应用.核心动画所在的位置如下图 ...
- iOS学习——核心动画之Layer基础
iOS学习——核心动画之Layer基础 1.CALayer是什么? CALayer我们又称它叫做层.在每个UIView内部都有一个layer这样一个属性,UIView之所以能够显示,就是因为它里面有这 ...
- iOS:核心动画之基本动画CABasicAnimation
基本动画,是CAPropertyAnimation的子类 属性说明: fromValue:keyPath相应属性的初始值 toValue:keyPath相应属性的结束值 动画过程说明: 随着动画的进行 ...
- IOS QuartzCore核心动画框架
IOS QuartzCore核心动画框架 核心动画框架 使用核心动画需要引入的框架:#import CALayer: CoreAnimation CALayer就是UIView上的图层,很多的CALa ...
- ios开发核心动画七:核心动画与UIView动画的区别
/** UIView与核心动画区别?(掌握) 1.核心动画只作用在layer. 2.核心动画看到的都是假像,它并没有去修改UIView的真实位置. 什么时候使用核心动画? 1.当不需要与用户进行交互, ...
- iOS之核心动画(Core Animation)
Core Animation,中文翻译为核心动画,它是一组非常强大的动画处理API,使用它能做出非常炫丽的动画效果,而且往往是事半功倍.也就是说,使用少量的代码就可以实现非常强大的功能. Core ...
- iOS:核心动画的详解介绍:CAAnimation(抽象类)及其子类
核心动画的详解介绍:CAAnimation(抽象类) 1.核心动画基本概念 Core Animation是一组非常强大的动画处理API,使用它能做出非常炫丽的动画效果,而且往往是事半功倍! 使用它 ...
- iOS基础 - 核心动画
一.核心动画 l 核心动画基本概念 l 基本动画 l 关键帧动画 l 动画组 l 转场动画 l Core Animation是一组非常强大的动画处理API,使用它能做出非常炫丽的动画效果,而且往往是事 ...
随机推荐
- c++中的struct
c++中的struct不在是c中的struct,不仅仅是一个多个数据类型的结构体了.c++中的struct可以具有成员函数(c语言中是不可以的),c++ struct还可以继承class等等.同时c+ ...
- 使用itunes同步ios时丢失照片恢复
因没有备份,在使用同步功能后,发现照片被清空了,找到恢复方法,分享之! from:http://modmyi.com/forums/native-iphone-ipod-touch-app-discu ...
- 项目中用到的js日期函数
<script type="text/javascript"> //替换字符串 function Replace(str, from, to) { ...
- android开发连接wifi addNetwork 返回-1
如下代码:(注释掉的是会返回-1的代码,未注释的是能够正常连接wifi的代码) // public WifiConfiguration CreateWifiInfo(String SSID, Stri ...
- 9、android开发之java.lang.verifyError(转载)
原文链接: http://www.linuxidc.com/Linux/2012-08/67289.htm 解决方案: 最近在做一个Android开发小项目的时候,遇到java.lang.verify ...
- 工作点滴积累(1)---MD5和编码
今天同事忽然问了一个问题,他发现同一个字符,比如"电影",用项目中的md5工具类生成的hash值和网上提供的在线MD5生成的hash值有时不一样,在只包含了字母字符串中,生成的ha ...
- 委托、事件和Lambda
一.委托 delegate1.在.Net平台下,委托类型用来定义和响应应用程序中的回调.事实上,.Net委托类型是一个类型安全的对象,指向可以以后调用的其他方法,.Net委托是内置支持多路广播和异步方 ...
- C++实现CString和string的互相转换
CString->std::string 例子: CString strMfc=“test“; std::string strStl; strStl=strMfc.GetBuffer(0); u ...
- hdu 1698 线段树 区间修改
#include <cstdio> #include <cstdlib> #include <cmath> #include <map> #includ ...
- 141029 V7 异步通知测试,15分钟循环代码重构,同步更新payInfo测试,支付成功timer测试成功说明
支付成功之后的1分钟定时任务:测试成功. 2014-10-29 17:16:06,892 DEBUG [http-bio-8086-exec-1] org.springframework.web.se ...