`
stephen830
  • 浏览: 3011383 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

iOS-自定义画圆、扇形、圆弧

 
阅读更多

 

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

 

 

 

 

 

 

  • 大小: 52.1 KB
分享到:
评论

相关推荐

    ios-自定义日历控件.zip

    "ios-自定义日历控件.zip"是一个包含自定义日历控件源代码的压缩包,适用于那些希望在自己的应用中提供独特日历体验的开发者。这个控件经过了对Xcode新版本的适配,修复了可能影响应用正常运行的问题。 首先,我们...

    ios-自定义Tabbar.zip

    "ios-自定义Tabbar.zip"这个压缩包很可能包含了一个关于如何在iOS项目中实现自定义TabBar的示例代码或者教程。 自定义TabBar的主要知识点包括以下几个方面: 1. **UI设计**:首先,你需要设计符合应用风格的TabBar...

    iOS -- 自定义照相机

    iOS -- 自定义照相机 -- a、AVCaptureDevice。这里代表抽象的硬件设备。 b、AVCaptureInput。这里代表输入设备(可以是它的子类),它配置抽象硬件设备的ports。 c、AVCaptureOutput。它代表输出数据,管理着...

    ios-自定义数字键盘.zip

    这个“ios-自定义数字键盘.zip”文件就提供了这样的解决方案。让我们深入探讨一下这个自定义数字键盘的实现原理、使用方法以及可能的应用场景。 首先,我们要理解的是,iOS中的键盘并不像Android那样可以通过简单...

    ios-自定义pickerview.zip

    "ios-自定义pickerview.zip"这个压缩包很可能包含了一个自定义DatePickerView的示例项目,用于展示如何根据需求定制PickerView的功能和外观。 首先,我们来了解下自定义PickerView的基础概念。在iOS中,自定义...

    ios-自定义分段选择Segment.zip

    本项目"ios-自定义分段选择Segment.zip"提供了一个自定义实现的Segment组件,它通过UIView来替代默认的SegmentControl,旨在解决UI设计与系统控件不匹配的问题。 首先,我们需要了解自定义分段选择的基本原理。在...

    ios-自定义时钟.zip

    这个"ios-自定义时钟.zip"项目显然旨在帮助新手开发者了解如何使用Storyboard和编程来实现这样的功能。让我们深入探讨一下这个话题,以及相关的知识点。 首先,`Storyboard`是Xcode中的一个可视化工具,用于构建iOS...

    ios-自定义弧形tabBar,tabbar点击水波纹动画,及其UIwebView中oc和js相互调用示例.zip

    本项目中的"ios-自定义弧形tabBar,tabbar点击水波纹动画,及其UIwebView中oc和js相互调用示例.zip"提供了一个很好的实例,展示了如何实现这一目标。以下是关于这个项目的详细知识点: 1. **自定义弧形TabBar**: ...

    ios-自定义UITabBarController.zip

    "ios-自定义UITabBarController.zip" 提供了一个封装好的自定义`UITabBarController`解决方案,其优点在于调用简单、易用性高。 首先,`YZTabbarViewController` 可能是自定义`UITabBarController` 的主要类,我们...

    ios-自定义导航栏.zip

    本项目“ios-自定义导航栏.zip”提供了一个广泛使用的自定义导航栏实现,旨在帮助开发者根据项目需求创建个性化、功能丰富的导航体验。 在原生的iOS开发中,苹果提供了UINavigationController来管理一个或多个...

    ios-自定义键盘。.zip

    本项目“ios-自定义键盘”是一个GitHub上的开源资源,作者为cgmsuccess,提供了创建自定义键盘的示例代码和指南。 一、自定义键盘的基本概念 自定义键盘在iOS中是通过实现UIKeyboardType协议来实现的,这个协议允许...

    ios-自定义超轻量级HUD.zip

    "ios-自定义超轻量级HUD.zip"就是这样一个例子,它提供了一种轻量级解决方案,帮助开发者快速创建自己的HUD。 这个自定义的HUD可能是用Swift或Objective-C编写,其核心功能可能包括以下几点: 1. **显示与隐藏**:...

    ios-自定义UIActionSheet.zip

    本资源"ios-自定义UIActionSheet.zip"提供了一个简单的自定义UIActionSheet的例子,主要探讨了如何在项目中实现更加个性化和功能丰富的弹出视图。 首先,我们了解下UIActionSheet的基本用法。UIActionSheet是...

    ios-自定义选择器.zip

    在"ios-自定义选择器.zip"这个压缩包中,包含了一个名为"CustomPickerViewDemol"的示例项目,它展示了如何根据特定需求定制自己的选择器。 首先,自定义选择器的基础是理解UIPickerView的工作原理。UIPickerView是...

    ios-自定义左滑删除按钮.zip

    "ios-自定义左滑删除按钮.zip" 文件提供了一种实现UITableView自定义左滑删除功能的方法,它带有圆角设计,使得整体视觉效果更加美观。这个功能的实现主要涉及手势交互(Gesture Recognition)以及UITableView的相关...

    ios-自定义导航切换栏.zip

    本项目“ios-自定义导航切换栏”旨在提供一个自定义的、可滑动的导航栏解决方案,增强用户体验并增加应用的交互性。项目作者Turf-z在GitHub上分享了这个名为`CustomContainerViewController`的实现。 `...

    ios-自定义CALayer.zip

    本示例中的"ios-自定义CALayer.zip"是一个教学项目,旨在指导开发者如何通过自定义CALayer来实现一个简单的星空模拟效果。尽管效果可能并不复杂,但这个例子对于初学者理解如何操作和扩展CALayer的潜力非常有帮助。 ...

    ios-自定义自动循环滚动.zip

    这个压缩包“ios-自定义自动循环滚动.zip”包含了一个名为“QJKJAutoCycleScrollDemo”的示例项目,它展示了如何利用UICollectionView实现这一功能。以下是关于这个主题的详细知识点: 一、UICollectionView基础 ...

    ios-自定义相册.zip

    "ios-自定义相册.zip" 提供了一个解决方案,它包含了自定义相册功能的实现,以及自定义转场动画,同时针对性能进行了优化,确保在浏览相册时不会出现卡顿现象。 首先,我们要理解在iOS中如何访问和展示用户的照片。...

Global site tag (gtag.js) - Google Analytics