在UIView上画圆圈、画直线的方法

手机检测,扫描动画 效果如图所示 外围有个带着尾巴的小球在大圈内旋转,,整个效果是纯代码实现,,中间的手机是一张图片,,首先要实现第二个图片的效果 先来看一下层级分析效果 具体的代码实现 /// 转动的圆圈 @property (nonatomic, strong) UIView *circle; /// 小的虚线圆圈 @property (nonatomi 阅读详情

       在UIView上画圆圈,画直线的方法很多,这里主要介绍一下用贝塞尔曲线(UIBezierPath)加CAShapeLayer的方法,这种方式比较轻量级,并且在滑动手势的时候可以空过改变它的半径,达到圆圈或者直线随手势变化的效果,经测试,这种方式很轻量,运行很流畅。

      画圆圈:

CGPoint CGRectGetCenter(CGRect rect){
    return CGPointMake(CGRectGetMidX(rect),CGRectGetMidY(rect));
}
- (void)initView
{
	CAShapeLayer *circleLayer;
	// 触摸的图层
	circleLayer = [CAShapeLayer layer];
	circleLayer.strokeColor = [UIColor whiteColor].CGColor;
	circleLayer.lineWidth = 1.5;
	circleLayer.fillColor = nil;
	circleLayer.opacity = 0.8;
	circleLayer.contentsScale = [UIScreen mainScreen].scale;
	UIBezierPath *path = [UIBezierPath bezierPathWithArcCenter:CGRectGetCenter(_touchView.frame)
	                                                                radius:touchLastRadius
	                                                            startAngle:-0.5 * M_PI
	                                                              endAngle:1.5 * M_PI
	                                                             clockwise:YES];
          
	circleLayer.path = path.CGPath;
	[_touchView.layer addSublayer:circleLayer]; // 在touch上就可以展示这个圆圈了
}

// 另外可以随着手势来动态改变这个圆圈
-(void)MeTouchesMoved:(NSSet *)touches withEvent:(UIEvent *)event
{
    NSArray * touchesArr=[[event allTouches] allObjects];
    DEBUGG(@"手指个数%lu", (unsigned long)[touchesArr count]);
    if([touchesArr count] >= 2)
    {
        CGPoint p1 = [[touchesArr objectAtIndex:0] locationInView:self.imageView];
        CGPoint p2 = [[touchesArr objectAtIndex:1] locationInView:self.imageView];
        CGFloat radius = sqrt((p1.x-p2.x)*(p1.x-p2.x) + (p1.y-p2.y)*(p1.y-p2.y));
        CGFloat showRadius = radius/touchBeginRadius*touchLastRadius;  // 移动过程中圆圈半径的计算公式
        if(showRadius < BlurMinRadius || showRadius > ScreenWidth/2)  // 半径太小或者太大没有意义,就不让他继续缩小或者放大了
        {
            return;
        }
        touchLastRadius = showRadius; // 记录最新的展示半径

        UIBezierPath *path = [UIBezierPath bezierPathWithArcCenter:CGRectGetCenter(_touchView.frame)
                                                            radius:touchLastRadius
                                                        startAngle:-0.5 * M_PI
                                                          endAngle:1.5 * M_PI
                                                         clockwise:YES];
        touchBeginRadius = radius; // 记录这次的手指半径
        circleLayer.path = path.CGPath;
	}
}

示图:(代码里面只画了一个圆)


画直线:

- (void)initView
{
    CAShapeLayer *middleLine;
    CAShapeLayer *topLine;
    CAShapeLayer *bottomLine;
    middleLine = [CAShapeLayer layer];
    [middleLine setFillColor:[[UIColor clearColor] CGColor]];
    [middleLine setStrokeColor:[[UIColor whiteColor] CGColor]];
    middleLine.lineWidth = 2.0f ;
    
    topLine = [CAShapeLayer layer];
    [topLine setFillColor:[[UIColor clearColor] CGColor]];
    [topLine setStrokeColor:[[UIColor whiteColor] CGColor]];
    topLine.lineWidth = 1.0f ;
    
    bottomLine = [CAShapeLayer layer];
    [bottomLine setFillColor:[[UIColor clearColor] CGColor]];
    [bottomLine setStrokeColor:[[UIColor whiteColor] CGColor]];
    bottomLine.lineWidth = 1.0f ;
	
    // 画直线
	UIBezierPath *path = [[UIBezierPath alloc]init];

	[path moveToPoint:CGPointMake(0, ScreenWidth/2)];
	[path addLineToPoint:CGPointMake(ScreenWidth,ScreenWidth/2)];
	middleLine.path = path.CGPath;
	[_touchView.layer addSublayer:middleLine];

	[path moveToPoint:CGPointMake(0, ScreenWidth/2-100)];
	[path addLineToPoint:CGPointMake(ScreenWidth,ScreenWidth/2-100)];
	topLine.path = path.CGPath;
	[_touchView.layer addSublayer:topLine];

	[path moveToPoint:CGPointMake(0, ScreenWidth/2+100)];
	[path addLineToPoint:CGPointMake(ScreenWidth,ScreenWidth/2+100)];
	bottomLine.path = path.CGPath;
	[_touchView.layer addSublayer:bottomLine];
}
示图:



Swift-贝赛尔曲线画扇形、弧线、圆形、多边形——UIBezierPath实现App下载时的动画效果 上篇文章提到了使用贝赛尔曲线实现画图板(传送门),顿时就对贝赛尔曲线兴趣大增有木有。 之所以接触贝赛尔曲线,多亏了师父。周五下班前师父给我留了个任务,让我周末回家研究研究 iPhone 手机下载 App 时的效果是怎么实现的(不知道效果的童鞋请看下图) 如果所示,下载 App 的过程效果,就是 App 图标中间有一个顺时针旋转的圆圈。当一圈走完时 App 就下载完成了。 刚给我交代这 阅读详情

相关推荐

西门子TM PosInput1模块SSI编码器配置与速度测量实战

本文详细介绍了西门子TM PosInput1模块配置SSI绝对值编码器的实战步骤,涵盖硬件组态、工艺对象配置、编程实现与速度测量优化。重点解析了高分辨率编码器的数值处理技巧和常见调试问题,帮助工程师快速实现高精度位置与速度检测,提升自动化项目效率。

emacs5lisp的博客 340

UIview画线

- (void)drawRect:(CGRect)rect { //获取准备好的画纸 CGContextRef context=UIGraphicsGetCurrentContext(); //绘图过程 CGContextMoveToPoint(conte...

chuliang4370的博客 159

AIGC内容溯源技术:如何追踪AI生成内容的原始来源

本文旨在系统性地介绍AIGC内容溯源的技术体系,帮助读者理解如何追踪AI生成内容的来源。我们将覆盖从基础概念到前沿技术的完整知识链,包括但不限于数字水印、区块链存证、内容指纹等技术方案。文章将从AIGC的基本概念出发,逐步深入探讨各种溯源技术,分析其原理和实现,最后讨论实际应用和未来趋势。AIGC:AI Generated Content,人工智能生成内容内容溯源:追踪数字内容的创作、修改和传播历史数字水印:嵌入在数字内容中的不可见识别信息数字水印:隐藏在内容中的识别信息,像隐形墨水内容指纹。

SuperAGI2025 2070

ios uiview绘制虚线_跟我学iOS14开发UIView补充

UINavigationBar、UIToolBar、UITabBar如图所示,从上往下依次是 UINavigationBar、UIToolBar 和 UITabBar。UINavigationBar导航条UIToolBar工具条UITabBar标签条区别UINavigationBar是UINavigationItem的容器,UINavigationItem和UIToolBar中放的是相...

weixin_35977784的博客 334

7、Python高光谱分析工具(PyHAT)简介

Python高光谱分析工具(PyHAT)是一个开源、跨平台的Python库及图形用户界面,用于行星光谱数据的可视化与分析。它支持多种高光谱传感器数据,如火星勘测轨道飞行器的CRISM、月船1号的M3以及SELENE Kaguya SP点光谱仪,提供预处理、衍生产品生成、统计学习和机器学习分析功能。PyHAT基于Pandas和NumPy构建,兼容Jupyter和QGIS环境,旨在解决现有光谱分析方法缺乏开源实现、难以探索性分析和算法分散的问题。其模块化架构涵盖数据输入/输出、通用光谱变换、测绘与点观测工具及高

aa123的博客 138

Dify智能体开发:发布嵌入网站

Dify 支持将你的 AI 应用嵌入到业务网站中,你可以使用该能力在几分钟内制作具有业务数据的官网 AI 客服、业务知识问答等应用。点击 WebApp 卡片上的嵌入按钮,复制嵌入代码,粘贴到你网站的目标位置。

王国平的博客 3244

UIView画圆、切圆环

对于一些圆,或者圆环我们可以用UIView进行切出来。 案例: 原图: 效果图: 主要代码如下: //设置圆环              self.pointView.layer.cornerRadius = 11; //设置圆形的程度              self.pointView.layer.masksToBounds = YES; //设置是

qq_18951479的博客 4781

【深度学习新浪潮】2025年末AI产业动态:泡沫争议、技术突破与2026投资机会解析

2025年末的AI产业在波动中完成了阶段性调整,技术突破与政策支持构筑了长期成长基石,而结构性分化与风险隐患则要求投资者更加精准地把握机会。2026年作为“风险资产的黄金年”,AI全产业链将持续成为资本聚焦的核心,无论是算力国产化的技术突破,还是应用场景的规模化落地,都有望催生一批优质企业。投资者需立足产业阶段特征,理性看待短期波动,聚焦核心技术与政策红利,方能在AI产业的成长浪潮中把握确定性机会。

专注:太空算力、AI infra、异构调度、大模型成本工程 1809

iOS 画线 绘制直线、矩形、三角形

转载:http://bravoo.diandian.com/ 在UIView中绘制直线、矩形、三角形 直线 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 -

wsk_123_123的专栏 2万+

【无人机编队】基于matlab虚拟leader无人机编队仿真【含Matlab源码 3279期】

虚拟leader无人机编队仿真 完整代码,包运行;可提供运行操作视频!适合小白!

订阅付费专栏Matlab(奶茶价版),可赠送奶茶价版付费专栏指定代码1份; 837

【项目实战】SOVD协议(面向服务的车辆诊断协议)

此外,AUTOSAR组织将SOVD部分内容的软件实现定义在了R22-11及以上版本的AUTOSAR Adaptive规范中,还支持动态发现车内诊断功能、获取高性能计算机(HPC)的Log信息等新的诊断需求,更符合当前软件定义汽车概念下的行业趋势。而SOVDGateway作为边缘节点,也肩负着对SOVD Client进行认证以及权限控制的责任,从而保证车辆的信息安全。相较于传统的UDS(Unified Diagnostic Services)协议,SOVD不仅保留了传统的读写数据、例程控制、故障读取等功能,

奶爸的编程之路,也就一周冷个三天 1905

UI --- UIView 画圆和矩形

UIView

Sara.Burton的博客 752

科研项目数据抓取:Python爬虫实现与分析

本文详细介绍了如何使用Python爬虫抓取科研项目的数据,涵盖了从目标数据源选择到数据存储与分析的整个过程。通过使用。

2201_76125261的博客 1710

swift:打造你自己的折线图

看到苹果Health里的折线图了吗。我们就是要打造一个这样的折线图。没看过的请看下图。 我们的主题在于折线图本身。其他的包括步数、日平均值等描述类的内容这里就不涉及了。   首先观察,这个图种包含些什么组成部分。线?这个太明显都看见了。还有每个节点的小圆圈,还有折线图里从上到下的渐变。这里是白色的从上到下逐渐透明的效果。还有一条虚线。这个暂时先不考虑了。你能绘制出来最下面的x轴标尺,绘制...

weixin_33709219的博客 103

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

图片的多种展示效果,及图片的拖动,缩放 icarousel

1。采用第三方开源代码:iCarousel,可实现图片的多种展示效果(@"直线", @"圆圈", @"反向圆圈", @"圆桶", @"反向圆桶", @"封面展示", @"封面展示2", @"纸牌" ),另需引入&lt;QuartzCore.framework&gt; 2。图片的移动,拖动:UIIMageView本身不支持移动,

dcj3sjt126com的专栏 328

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

Swift - LineChart绘制折线图

LineChart,就使用Core Graphics和QuartzCore框架中的CAShapeLayer绘制。这样执行效率明显比堆砌UIView的方法效率高--占用资源少,执行快。 看看CALayer的定义: class CALayer : NSObject, NSCoding, CAMediaTiming 再看看UIView的定义: class UIView : UIResponder,

gongyuhonglou的博客 2404

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

图片的多种展示效果,及图片的拖动,缩放

1。采用第三方开源代码:iCarousel,可实现图片的多种展示效果(@"直线", @"圆圈", @"反向圆圈", @"圆桶", @"反向圆桶", @"封面展示", @"封面展示2", @"纸牌" ),另需引入 2。图片的移动,拖动:UIIMageView本身不支持移动,拖动,需重写来继承UIView来实现(DragImageView)。 主要代码如下 : 1)ImageV

wzh1215的专栏 3742

动画原理 浅析

这篇文章不会教大家如何实现一个具体的动画效果,我会从动画的本质出发,来说说 iOS 动画的原理与实现方式。 什么是动画 动画,顾名思义,就是能“动”的画。人的眼睛对图像有短暂的记忆效应,所以当眼睛看到多张图片连续快速的切换时,就会被认为是一段连续播放的动画了。 比如,中国古代的“走马灯”,就是用的这个原理。有些人还会在一个本子每页上手绘一些漫画,当快速翻页的时候,也会看到动画的效果,比如: ...

weixin_33998125的博客 207

iOS进阶4 -- 动画总结

1.基础:逐帧 与 关键帧逐帧动画: 类似于手绘翻页方式,我们可以将这个水杯在每帧画面中的位置一一找出来,这样实现动画的方式就叫作 逐帧动画,我们需要处理动画中的每一帧。我们一般在计算机上用 FPS ( Frames Per Second) ,即 每秒的帧数 来表示动画的刷新速度,基于屏幕的刷新率等其他原因,在计算机上一般采用 60 FPS。 如果运动变化幅度较缓,减半到 30 FPS 时,我们肉

DC_Even的博客 524

iOS 动画原理与实现--帧动画、逐帧动画、CALayer

这篇文章不会教大家如何实现一个具体的动画效果,我会从动画的本质出发,来说说 iOS 动画的原理与实现方式。 什么是动画 动画,顾名思义,就是能“动”的画。 人的眼睛对图像有短暂的记忆效应,所以当眼睛看到多张图片连续快速的切换时,就会被认为是一段连续播放的动画了。 比如,中国古代的“走马灯”,就是用的这个原理。 有些人还会在一个本子每页上手绘一些漫画,当快速翻页的时候,也会看到动画的效果,

u014773226的博客 5310
上一篇: 对一个UiView添加点击事件
下一篇: C++ 内存分配(new,operator new、placement new)详解
飛雪一刀
博客等级 码龄19年 18粉丝 34原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值