iOS---实现在屏幕上实时绘图的简单效果---CAShaperLayer和UIBezierPath的简单运用
首先,声明几个属性
@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(, , 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 =;
[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;
}
}
大功告成。如图

iOS---实现在屏幕上实时绘图的简单效果---CAShaperLayer和UIBezierPath的简单运用的更多相关文章
- TypeWonder – 在任何网站上实时预览字体效果
TypeWonder 让网页字体的选择过程变得轻松愉快.它可以帮助您在任何网站上快速测试 Web 字体效果!输入网站网址,就能够即时预览的字体的实际效果,还可以从数百种字体中进行挑选,您还可以得到所需 ...
- iOS 设备屏幕上实时打印 Log 的小工具
需求 写这个小工具的想法,主要来源于很多团队都会用友盟.TalkingData 等第三方框架做自定义事件统计:不过统计代码加好之后,没有很好的方法来让测试工程师验证一下事件加上了没有,调用次数有没有重 ...
- IOS UIView 01-View开始深入 绘制像素到屏幕上
注:本人是翻译过来,并且加上本人的一点见解. 前言 一个像素是如何绘制到屏幕上去的?有很多种方式将一些东西映射到显示屏上,他们需要调用不同的框架.许多功能和方法的结合体.这里我们大概的看一下屏幕之后发 ...
- IOS 特定于设备的开发:使用加速器启动屏幕上的对象
借助一点编程工作,iPhone的机载加速计就可以使对象在屏幕上四处“移动”,实时响应用户倾斜手机的方式.下面的代码就是创建一个动画式的蝴蝶,用户可以使之快速移过屏幕. 使之工作的秘密在于:向程序中添加 ...
- iOS开发中获取视图在屏幕上显示的位置
在iOS开发中,我们会经常遇到一个问题,例如,点击一个按钮,弹出一个遮罩层,上面显示一个弹框,弹框显示的位置在按钮附近.如果这个按钮的位置相对于屏幕边缘的距离是固定的,那就容易了,可以直接写死位置.可 ...
- 转 如何在IOS设备中去掉屏幕上的status bar
引入如何在IOS设备中去掉屏幕上的status bar,即:不显示设备上方的[网络.时间.电池??]条?操作方法一:在-info.list项目文件中,加上“Status bar is initiall ...
- iOS开发之使用Storyboard预览UI在不同屏幕上的运行效果
在公司做项目一直使用Storyboard,虽然有时会遇到团队合作的Storyboard冲突问题,但是对于Storyboard开发效率之高还是比较划算的.在之前的博客中也提到过,团队合作使用Storyb ...
- iOS判断UIView是否显示在屏幕上
@interface - (BOOL)isDisplayedInScreen; @end @implementation UIView(UIScreenDisplaying) //判断View是否显示 ...
- AR创意分享:儿童涂鸦遇上程序绘图
第一节 临摹 小明经常临摹同桌小美的画作. 美术课上,老师表扬了小美的新作. 图1.1 小美的作品<蒙娜·毛虫的微笑> 临,是照着原作画:摹,是用薄纸张蒙在原作上面画. 第二节 借画 小明 ...
随机推荐
- Delphi IDE使用的一些主要技巧
Delphi IDE使用的一些主要技巧 1.查找和替换 (1)<ctrl>+F[1]:选择页“Find”,进行查找,则根据查找方向继续查找.选择页“Findin Files”,则进行该工程 ...
- bzoj3929 Discrete Logging 大步小步算法
#include<cstdio> #include<algorithm> #include<cmath> #include<map> using nam ...
- 操作Json对象的C#方法
json对象长这样 { "UniqueName": { "Required": "true", , , "Regex": ...
- axios入门使用
vue项目中axios的基本使用和简单封装 axios中文文档官网 http://www.axios-js.com/docs/ 一:不封装直接使用 npm install axios 在main.js ...
- js for 循环
<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8" ...
- git自动上传脚本及基本代码
git_auto.bat git add . git add -A git add -u git commit -m "text" git pull --rebase origin ...
- Linux的磁盘配额详解(Quota)
1. 检查内核情况 检查当前内核是否支持quota,当前内核配置文件在/boot下 如果当前内核不支持quota,需要重新编译内核将quota support编译进核心: File systems ...
- Spring Boot 2.2.0 正式发布,支持 JDK 13!
Java技术栈 www.javastack.cn 优秀的Java技术公众号 推荐阅读: Spring Boot 2.2.0 正式发布了,可从 repo.spring.io 或是 Maven Centr ...
- 工作笔记之:如何在eclipse安装CVS插件?找了很久的,自己总结一下
(1)在主目录里“help”→Install New Software.....→The Eclipse Project Updates - http://download.eclipse.org/e ...
- C/C++ 内存与指针
内存与指针杂谈 1.指针 1.数组指针 int(*ptr)[n] ()的优先级高,(*ptr)表示ptr是一个指针,指向一个int类型的一维数组,这个数组的长度为n,也可以说ptr的步长就是n.也就是 ...