[IOS]画线/画圆

2024-08-20 23:58
文章标签 ios 画圆 画线

本文主要是介绍[IOS]画线/画圆,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

[IOS]画线/画圆

Demo:http://download.csdn.net/detail/u012881779/8638287

效果:

UIView:

- (void)drawRect:(CGRect)rect {[super drawRect:rect];CGRect frame = CGRectMake(50, 100, 100, 100);/*画填充圆*/CGContextRef context = UIGraphicsGetCurrentContext();[[UIColor whiteColor] set];CGContextFillRect(context, rect);CGContextAddEllipseInRect(context, frame);[[UIColor orangeColor] set];CGContextFillPath(context);/*边框圆*/CGContextSetRGBStrokeColor(context, 255/255.0, 106/255.0, 0/255.0, 1);CGContextSetLineWidth(context, 5);CGContextAddArc(context, 50, 70, 20, 0, 2*M_PI, 0);CGContextDrawPath(context, kCGPathStroke);/*画直线*/CGRect markFrame = CGRectMake(100, 250, 200, 200);[[UIColor orangeColor] set];CGContextSetLineWidth(context, 4);CGPoint points[5];points[0] = CGPointMake(markFrame.origin.x,markFrame.origin.y);points[1] = CGPointMake(markFrame.origin.x+markFrame.size.width/4, markFrame.origin.y+markFrame.size.height/2);points[2] = CGPointMake(markFrame.origin.x+markFrame.size.width/2, markFrame.origin.y+5);points[3] = CGPointMake(markFrame.origin.x+markFrame.size.width/4*3,markFrame.origin.y+markFrame.size.height/2);points[4] = CGPointMake(markFrame.origin.x+markFrame.size.width, markFrame.origin.y);CGContextAddLines(context, points, 5);CGContextDrawPath(context, kCGPathStroke);//边框圆CGContextSetLineWidth(context, 5);CGContextAddArc(context, markFrame.origin.x+markFrame.size.width/2, markFrame.origin.y+markFrame.size.height/2, markFrame.size.height/2-2, 0, 2*M_PI, 0);CGContextDrawPath(context, kCGPathStroke);/*曲线*/[[UIColor redColor] set];CGContextSetLineWidth(context, 4.0);CGContextSetStrokeColorWithColor(context, [UIColor orangeColor].CGColor);CGContextMoveToPoint(context, 300, 370);CGContextAddCurveToPoint(context,  193, 320, 100, 370, 100, 370);CGContextStrokePath(context);
}

UIViewController:

#import "DrawViewController.h"@interface DrawViewController ()@end@implementation DrawViewController- (void)viewDidLoad {[super viewDidLoad];/**画虚线圆*/CAShapeLayer *dotteLine =  [CAShapeLayer layer];CGMutablePathRef dottePath =  CGPathCreateMutable();dotteLine.lineWidth = 2.0f ;dotteLine.strokeColor = [UIColor orangeColor].CGColor;dotteLine.fillColor = [UIColor clearColor].CGColor;CGPathAddEllipseInRect(dottePath, nil, CGRectMake(50.0f,  50.0f, 200.0f, 200.0f));dotteLine.path = dottePath;NSArray *arr = [[NSArray alloc] initWithObjects:[NSNumber numberWithInt:10],[NSNumber numberWithInt:5], nil];dotteLine.lineDashPhase = 1.0;dotteLine.lineDashPattern = arr;CGPathRelease(dottePath);[self.view.layer addSublayer:dotteLine];/**画实线圆*/CAShapeLayer *solidLine =  [CAShapeLayer layer];CGMutablePathRef solidPath =  CGPathCreateMutable();solidLine.lineWidth = 2.0f ;solidLine.strokeColor = [UIColor orangeColor].CGColor;solidLine.fillColor = [UIColor clearColor].CGColor;CGPathAddEllipseInRect(solidPath, nil, CGRectMake(50.0f,  300.0f, 200.0f, 200.0f));solidLine.path = solidPath;CGPathRelease(solidPath);[self.view.layer addSublayer:solidLine];/**画虚线*/CAShapeLayer *dotteShapeLayer = [CAShapeLayer layer];CGMutablePathRef dotteShapePath =  CGPathCreateMutable();[dotteShapeLayer setFillColor:[[UIColor clearColor] CGColor]];[dotteShapeLayer setStrokeColor:[[UIColor orangeColor] CGColor]];dotteShapeLayer.lineWidth = 2.0f ;NSArray *dotteShapeArr = [[NSArray alloc] initWithObjects:[NSNumber numberWithInt:10],[NSNumber numberWithInt:5], nil];[dotteShapeLayer setLineDashPattern:dotteShapeArr];CGPathMoveToPoint(dotteShapePath, NULL, 20,500);CGPathAddLineToPoint(dotteShapePath, NULL, 20, 285);CGPathAddLineToPoint(dotteShapePath, NULL, 300,285);[dotteShapeLayer setPath:dotteShapePath];CGPathRelease(dotteShapePath);[self.view.layer addSublayer:dotteShapeLayer];/**画实线*/CAShapeLayer *solidShapeLayer = [CAShapeLayer layer];CGMutablePathRef solidShapePath =  CGPathCreateMutable();[solidShapeLayer setFillColor:[[UIColor clearColor] CGColor]];[solidShapeLayer setStrokeColor:[[UIColor orangeColor] CGColor]];solidShapeLayer.lineWidth = 2.0f ;CGPathMoveToPoint(solidShapePath, NULL, 20, 265);CGPathAddLineToPoint(solidShapePath, NULL, 300,265);CGPathAddLineToPoint(solidShapePath, NULL, 300,50);[solidShapeLayer setPath:solidShapePath];CGPathRelease(solidShapePath);[self.view.layer addSublayer:solidShapeLayer];}



示图:



这篇关于[IOS]画线/画圆的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1091550

相关文章

无人叉车3d激光slam多房间建图定位异常处理方案-墙体画线地图切分方案

墙体画线地图切分方案 针对问题:墙体两侧特征混淆误匹配,导致建图和定位偏差,表现为过门跳变、外月台走歪等 ·解决思路:预期的根治方案IGICP需要较长时间完成上线,先使用切分地图的工程化方案,即墙体两侧切分为不同地图,在某一侧只使用该侧地图进行定位 方案思路 切分原理:切分地图基于关键帧位置,而非点云。 理论基础:光照是直线的,一帧点云必定只能照射到墙的一侧,无法同时照到两侧实践考虑:关

安卓链接正常显示,ios#符被转义%23导致链接访问404

原因分析: url中含有特殊字符 中文未编码 都有可能导致URL转换失败,所以需要对url编码处理  如下: guard let allowUrl = webUrl.addingPercentEncoding(withAllowedCharacters: .urlQueryAllowed) else {return} 后面发现当url中有#号时,会被误伤转义为%23,导致链接无法访问

【iOS】MVC模式

MVC模式 MVC模式MVC模式demo MVC模式 MVC模式全称为model(模型)view(视图)controller(控制器),他分为三个不同的层分别负责不同的职责。 View:该层用于存放视图,该层中我们可以对页面及控件进行布局。Model:模型一般都拥有很好的可复用性,在该层中,我们可以统一管理一些数据。Controlller:该层充当一个CPU的功能,即该应用程序

iOS剪贴板同步到Windows剪贴板(无需安装软件的方案)

摘要 剪贴板同步能够提高很多的效率,免去复制、发送、复制、粘贴的步骤,只需要在手机上复制,就可以直接在电脑上 ctrl+v 粘贴,这方面在 Apple 设备中是做的非常好的,Apple 设备之间的剪贴板同步功能(Universal Clipboard)确实非常方便,它可以在 iPhone、iPad 和 Mac 之间无缝传输剪贴板内容,从而大大提高工作效率。 但是,iPhone 如何和 Wind

iOS项目发布提交出现invalid code signing entitlements错误。

1、进入开发者账号,选择App IDs,找到自己项目对应的AppId,点击进去编辑, 2、看下错误提示出现  --Specifically, value "CVYZ6723728.*" for key "com.apple.developer.ubiquity-container-identifiers" in XX is not supported.-- 这样的错误提示 将ubiquity

我的第一次份实习工作-iOS实习生-第三个月

第三个月 这个月有一个考核项目,是一个电子书阅读器,组长说很重要,是我的实习考核项目。 我的项目XTReader,这是我参考网上的一些代码,和模仿咪咕阅读做的,功能还不完善,数据的部分是用聚合数据做的。要收费的。   还有阅读页面,基本功能实现了一下。使用了autolayout,自适应布局,也是第一次用网络,第一次用数据库,第一次用自动布局。还有很多不足。 做了一周多,有个问题一直没

我的第一次份实习工作-iOS实习生-公司使用过的软件

bittorrentsync 素材,文件同步软件 cornerstone svn 软件开发合作 mark man 测量坐标的软件 SQLLite Manager 数据库操作软件

我的第一次份实习工作-iOS实习生-第二个月

第二个月 来公司过了一个月了。每天早上9点上班,到晚上6.30下班,上下班要指纹打卡,第一个月忘了打卡好多次(),然后还要去补打卡单。公司这边还安排了,工资卡办理,招商银行卡。开了一次新员工大会,认识了公司的一些过往,公司的要求等,还加了一下公司的企业QQ,还有其他的羽毛球群,篮球群。我加了下羽毛球群,也去打了一两次。第二个月的感受,感觉跟组里面的交流跟沟通都好少,基本上还有好多人不认识。想想也

我的第一次份实习工作-iOS实习生-第一个月

实习时间:2015-08-20 到 2015-12-25  实习公司;福建天棣互联有限公司 实习岗位:iOS开发实习生 第一个月: 第一天来公司,前台报道后,人资带我去我工作的地方。到了那,就由一个组长带我,当时还没有我的办公桌,组长在第三排给我找了一个位置,擦了下桌子,把旁边的准备的电脑帮我装了下,因为学的是iOS,实习生就只能用黑苹果了,这是我实习用的电脑。 帮我装了一下电脑后,开机

iOS如何隐藏系统状态栏

这里主要说明一下iOS7系统给状态栏的适配及隐藏带来的改变。 变化一: 不隐藏状态栏的情况下,StatusBar会直接显示在当前页面上,当前页面的会延伸到 StatusBar下方,顶到最上头。 这种显示方式在iOS7上是无法改变的,也无法通过设置或者配置类达到iOS6的状态栏效果。       所以在iOS7上进行页面布局的时候要考虑