博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
iOS---实现在屏幕上实时绘图的简单效果---CAShaperLayer和UIBezierPath的简单运用
阅读量:6954 次
发布时间:2019-06-27

本文共 1378 字,大约阅读时间需要 4 分钟。

首先,声明几个属性

@property(nonatomic,strong)UIBezierPath * beizer;@property(nonatomic,assign)CGPoint startPoint;@property(nonatomic,assign)CGPoint movePoint;@property(nonatomic,strong)CAShapeLayer * shapelayer;

然后注册屏幕上的拖拽事件,并初始化贝塞尔曲线和CAShapeLayer

- (void)viewDidLoad {    [super viewDidLoad];    UIPanGestureRecognizer * pan = [[UIPanGestureRecognizer alloc]initWithTarget:self action:@selector(panTouch:)];    [self.view addGestureRecognizer:pan];    self.beizer = [UIBezierPath bezierPath];    [self initCAShaper];}-(void)initCAShaper{    self.shapelayer = [CAShapeLayer new];    self.shapelayer.frame = CGRectMake(0, 0, self.view.frame.size.width, self.view.frame.size.height);    self.shapelayer.fillColor = nil;    self.shapelayer.lineCap = kCALineCapRound;    self.shapelayer.strokeColor = [UIColor cyanColor].CGColor;    self.shapelayer.lineWidth =2;    [self.view.layer addSublayer:self.shapelayer];}

紧接着处理拖拽事件

-(void)panTouch:(UIPanGestureRecognizer *)pan{    _startPoint = [pan locationInView:self.view];    if(pan.state == UIGestureRecognizerStateBegan)    {        [self.beizer moveToPoint:_startPoint];    }    if(pan.state == UIGestureRecognizerStateChanged)    {        _movePoint = [pan locationInView:self.view];        [_beizer addLineToPoint:_movePoint];        self.shapelayer.path = _beizer.CGPath;    }}

大功告成。如图

转载于:https://www.cnblogs.com/zhendiao/p/5164910.html

你可能感兴趣的文章
vue 短信验证码
查看>>
20145129实验报告(一)
查看>>
mssql表分区
查看>>
静态方法工厂模式
查看>>
该是总结沉淀的时候了
查看>>
正则表达式学习笔记
查看>>
sublime text笔记
查看>>
MySQL中,修改表的某一字段的部分值
查看>>
Java TreeMap 源码解析
查看>>
在Ubuntu 12.04 上编译调试 OpenJDK8
查看>>
WPF一段代码搞定所有的点击事件
查看>>
Mac上同步git遇到N多坎坷
查看>>
kettle-自定义常量数据->删除
查看>>
第十二周项目3-用递归方法求解(二)
查看>>
php中base64_decode与base64_encode加密解密函数
查看>>
127. Word Ladder
查看>>
Node.js权威指南 (8) - 创建HTTP与HTTPS服务器及客户端
查看>>
CSharp设计模式读书笔记(6):建造者模式(学习难度:★★★★☆,使用频率:★★☆☆☆)...
查看>>
Docker_1 安装Docker-CE
查看>>
shell 变量赋值与替换
查看>>