iOS-自定义画圆、扇形、圆弧
自定义画圆、扇形、圆弧的UIView
ZJQView03.h
#import <UIKit/UIKit.h> #define PI 3.14159265358979323846 @interface ZJQView03 : UIView @end
ZJQView03.m
#import "ZJQView03.h" @implementation ZJQView03 -(instancetype)initWithFrame:(CGRect)frame{ self=[super initWithFrame:frame]; if(self) {} return self; } -(void)drawRect:(CGRect)rect{ //An opaque type that represents a Quartz 2D drawing environment. //一个不透明类型的Quartz 2D绘画环境,相当于一个画布,你可以在上面任意绘画 CGContextRef context = UIGraphicsGetCurrentContext(); //void CGContextAddArc(CGContextRef c,CGFloat x, CGFloat y,CGFloat radius,CGFloat startAngle,CGFloat endAngle, int clockwise) //1弧度=180°/π (≈57.3°) 度=弧度×180°/π 360°=360×π/180 =2π 弧度 //x,y为圆点坐标,radius半径,startAngle为开始的弧度,endAngle为 结束的弧度,clockwise 0为顺时针,1为逆时针。 //CGContextDrawPath方法的第2个参数: //kCGPathFill:填充; //kCGPathEOFill表示用奇偶规则, //kCGPathStroke路径, //kCGPathFillStroke路径填充, //kCGPathEOFillStroke表示描线,不是填充 //画扇形 CGContextMoveToPoint(context, 60, 60);//移动画笔到指定坐标点 UIColor* aColor = [UIColor colorWithRed:1 green:0.0 blue:0 alpha:1];//红色 CGContextSetFillColorWithColor(context, aColor.CGColor);//填充颜色 CGContextAddArc(context, 60, 60, 40, 0, 1.5*PI, 0); //添加一个圆 CGContextDrawPath(context, kCGPathFill); //填充路径 //画圆 UIColor* bColor = [UIColor colorWithRed:1 green:0.0 blue:0 alpha:1];//红色 CGContextSetFillColorWithColor(context, bColor.CGColor);//填充颜色 CGContextAddArc(context, 60, 160, 40, 0, 2*PI, 0); //添加一个圆 CGContextDrawPath(context, kCGPathFill); //填充路径 //画弧线 CGContextSetRGBStrokeColor(context,0,0,1,1.0);//画笔线的颜色:这里是蓝色 //也可以使用CGContextSetStrokeColorWithColor方法:就可以用UIColor颜色参数 //CGContextSetStrokeColorWithColor(context, [UIColor blueColor].CGColor); CGContextSetLineWidth(context, 5.5);//线的宽度 CGContextAddArc(context, 60, 60, 41, 1.5*PI, 0*PI, 0); //添加一个圆(弧):这里起点弧为1.5*PI,终点弧为0*PI CGContextDrawPath(context, kCGPathStroke); //绘制路径 } @end
ViewController899.h
#import <UIKit/UIKit.h> #import "ZJQView03.h" @interface ViewController899 : UIViewController { @private ZJQView03* zjqView03; } @end
ViewController899.m
#import "ViewController899.h" #import "MyLog.h" #define IOS7 [[[UIDevice currentDevice]systemVersion] floatValue] >= 7.0 //判断SDK版本号是否是7.0或7。0以上 @interface ViewController899 () @end @implementation ViewController899 - (void)viewDidLoad { [super viewDidLoad]; [self doInit]; } - (void)didReceiveMemoryWarning { [super didReceiveMemoryWarning]; } -(void)viewDidAppear:(BOOL)animated{ [super viewDidAppear:animated]; zjqView03.center=CGPointMake(self.view.center.x, (self.view.bounds.size.height-zjqView03.frame.origin.y)/2);//移到屏幕中心点 [MyLog logViews:self.view.window]; } -(void) doInit { //IOS7版本特殊处理 if (IOS7) { self.edgesForExtendedLayout=UIRectEdgeNone; } self.view.backgroundColor=[UIColor whiteColor]; zjqView03 = [[ZJQView03 alloc]initWithFrame:CGRectMake(0, 0, 200, 260)]; zjqView03.backgroundColor=[UIColor yellowColor]; [self.view addSubview:zjqView03]; } @end
执行效果图如下:
工程代码见附件中的demo010.zip
相关推荐
"ios-自定义日历控件.zip"是一个包含自定义日历控件源代码的压缩包,适用于那些希望在自己的应用中提供独特日历体验的开发者。这个控件经过了对Xcode新版本的适配,修复了可能影响应用正常运行的问题。 首先,我们...
"ios-自定义Tabbar.zip"这个压缩包很可能包含了一个关于如何在iOS项目中实现自定义TabBar的示例代码或者教程。 自定义TabBar的主要知识点包括以下几个方面: 1. **UI设计**:首先,你需要设计符合应用风格的TabBar...
iOS -- 自定义照相机 -- a、AVCaptureDevice。这里代表抽象的硬件设备。 b、AVCaptureInput。这里代表输入设备(可以是它的子类),它配置抽象硬件设备的ports。 c、AVCaptureOutput。它代表输出数据,管理着...
这个“ios-自定义数字键盘.zip”文件就提供了这样的解决方案。让我们深入探讨一下这个自定义数字键盘的实现原理、使用方法以及可能的应用场景。 首先,我们要理解的是,iOS中的键盘并不像Android那样可以通过简单...
"ios-自定义pickerview.zip"这个压缩包很可能包含了一个自定义DatePickerView的示例项目,用于展示如何根据需求定制PickerView的功能和外观。 首先,我们来了解下自定义PickerView的基础概念。在iOS中,自定义...
本项目"ios-自定义分段选择Segment.zip"提供了一个自定义实现的Segment组件,它通过UIView来替代默认的SegmentControl,旨在解决UI设计与系统控件不匹配的问题。 首先,我们需要了解自定义分段选择的基本原理。在...
这个"ios-自定义时钟.zip"项目显然旨在帮助新手开发者了解如何使用Storyboard和编程来实现这样的功能。让我们深入探讨一下这个话题,以及相关的知识点。 首先,`Storyboard`是Xcode中的一个可视化工具,用于构建iOS...
本项目中的"ios-自定义弧形tabBar,tabbar点击水波纹动画,及其UIwebView中oc和js相互调用示例.zip"提供了一个很好的实例,展示了如何实现这一目标。以下是关于这个项目的详细知识点: 1. **自定义弧形TabBar**: ...
"ios-自定义UITabBarController.zip" 提供了一个封装好的自定义`UITabBarController`解决方案,其优点在于调用简单、易用性高。 首先,`YZTabbarViewController` 可能是自定义`UITabBarController` 的主要类,我们...
本项目“ios-自定义导航栏.zip”提供了一个广泛使用的自定义导航栏实现,旨在帮助开发者根据项目需求创建个性化、功能丰富的导航体验。 在原生的iOS开发中,苹果提供了UINavigationController来管理一个或多个...
本项目“ios-自定义键盘”是一个GitHub上的开源资源,作者为cgmsuccess,提供了创建自定义键盘的示例代码和指南。 一、自定义键盘的基本概念 自定义键盘在iOS中是通过实现UIKeyboardType协议来实现的,这个协议允许...
"ios-自定义超轻量级HUD.zip"就是这样一个例子,它提供了一种轻量级解决方案,帮助开发者快速创建自己的HUD。 这个自定义的HUD可能是用Swift或Objective-C编写,其核心功能可能包括以下几点: 1. **显示与隐藏**:...
本资源"ios-自定义UIActionSheet.zip"提供了一个简单的自定义UIActionSheet的例子,主要探讨了如何在项目中实现更加个性化和功能丰富的弹出视图。 首先,我们了解下UIActionSheet的基本用法。UIActionSheet是...
在"ios-自定义选择器.zip"这个压缩包中,包含了一个名为"CustomPickerViewDemol"的示例项目,它展示了如何根据特定需求定制自己的选择器。 首先,自定义选择器的基础是理解UIPickerView的工作原理。UIPickerView是...
"ios-自定义左滑删除按钮.zip" 文件提供了一种实现UITableView自定义左滑删除功能的方法,它带有圆角设计,使得整体视觉效果更加美观。这个功能的实现主要涉及手势交互(Gesture Recognition)以及UITableView的相关...
本项目“ios-自定义导航切换栏”旨在提供一个自定义的、可滑动的导航栏解决方案,增强用户体验并增加应用的交互性。项目作者Turf-z在GitHub上分享了这个名为`CustomContainerViewController`的实现。 `...
本示例中的"ios-自定义CALayer.zip"是一个教学项目,旨在指导开发者如何通过自定义CALayer来实现一个简单的星空模拟效果。尽管效果可能并不复杂,但这个例子对于初学者理解如何操作和扩展CALayer的潜力非常有帮助。 ...
这个压缩包“ios-自定义自动循环滚动.zip”包含了一个名为“QJKJAutoCycleScrollDemo”的示例项目,它展示了如何利用UICollectionView实现这一功能。以下是关于这个主题的详细知识点: 一、UICollectionView基础 ...
"ios-自定义相册.zip" 提供了一个解决方案,它包含了自定义相册功能的实现,以及自定义转场动画,同时针对性能进行了优化,确保在浏览相册时不会出现卡顿现象。 首先,我们要理解在iOS中如何访问和展示用户的照片。...