美文网首页
Quartz 2D绘制路径实例

Quartz 2D绘制路径实例

作者: 蔚尼 | 来源:发表于2018-06-08 10:08 被阅读4次

一.绘制进度条

在研究了Quartz 2D绘制路径、文字之后,我们需要实例运用一下。首先我们制作一个如下的效果,拖动slider的时候,扇形的进度条也随之加载。

进度条效果图

思路:

  1. 需要一个slider、一个view来绘制扇形;
  2. 当slider拖动的时候,把slider滑动到的value值给view来绘制扇形;
  3. 扇形最小弧度是0,最大弧度是360度(M_PI * 2);扇形的起点是-M_PI_2,终点是slider滑动的value * 360度(M_PI * 2);

实现

我们再storyboard里面添加一个slider、一个ProgressView,ProgressView里面添加一个valueLabel来显示进度;

添加的view
viewcontroller:

#import "ViewController.h"
#import "ProgressView.h"
@interface ViewController ()
@property (weak, nonatomic) IBOutlet ProgressView *progressView;
@end

@implementation ViewController

//滚动条滚动调用的事件
- (IBAction)sliderValueChange:(UISlider *)sender {
    
    //把滚动的值传给显示的view
    self. progressView.value = sender.value;
    
}
@end

ProgressView:
.h
@interface ProgressView : UIView
//用于接收滚动的值
@property(nonatomic,assign)CGFloat value;

@end

.m
@implementation ProgressView
-(void)setValue:(CGFloat)value{
    
    _value = value;
    //修改lable显示的内容
    _valueLabel.text = [NSString stringWithFormat:@"%.2f%%",value * 100];
    //通知系统,调用drawRect方法
    [self setNeedsDisplay];
}
/*
 当系统调用drawRect方法时,在drawRect内部会自动创建跟view相关的上下文
 手动调用drawRect不会创建上下文
 */
- (void)drawRect:(CGRect)rect {

    CGPoint center = CGPointMake(rect.size.width * 0.5, rect.size.height *0.5);
    CGFloat radius = rect.size.width/2.0 - 10;
    CGFloat startA = -M_PI_2;//-90度
    CGFloat endA = startA + _value * M_PI * 2; //value * 360度

     //1.获取上下文
    CGContextRef ctx = UIGraphicsGetCurrentContext();
    //2.描绘路径
    UIBezierPath  * path = [UIBezierPath bezierPathWithArcCenter:center radius:radius startAngle:startA endAngle:endA clockwise:YES];
    [path addLineToPoint:center];
    //设置上下文状态
    [[UIColor yellowColor] set];
    
    //3.把路径添加到画板上面
    CGContextAddPath(ctx, path.CGPath);
    //4.把上下文渲染到view的layer层
    
    [path fill];
}

@end

相关文章

  • Quartz 2D绘制路径实例

    一.绘制进度条 在研究了Quartz 2D绘制路径、文字之后,我们需要实例运用一下。首先我们制作一个如下的效果,拖...

  • Quartz 2D绘制-绘制图片

    Quartz 2D绘制路径、文字里面记录了绘制路径和文字。今天记录的是绘制图片。 步骤 之前绘制是在view的dr...

  • IOS中使用Quartz 2D绘制虚线

    IOS中使用Quartz 2D绘制虚线

  • Quartz 2D

    Quartz 2D:是一个二维图形绘制引擎,支持iOS环境与Mac OS X 环境;实现功能如:基本路径的绘制、透...

  • Quartz 2D 概念、图形上下文、路径

    Quartz 2D是二维图形绘制引擎,可以实现N多图形图像的操作功能,如基本路径的绘制、透明度、描影、绘制阴影、透...

  • iOS 绘制虚线的三种方法

    方法一:通过Quartz 2D 在 UIView drawRect:方法进行绘制虚线 方法二:通过 Quartz ...

  • Quartz 2D绘制路径、文字

    最近都是对UI部分的研究,特别是Quartz2D部分。将会有一波相关文章来袭~~~今天记录的是绘制路径和绘制文字。...

  • Quartz 2D概述

    Quartz 2D是iOS系统以及所有Mac OSX应用内核外的二维绘制引擎。可以使用* Quartz 2D* A...

  • iOS绘图引擎之Quartz 2D第一篇

    iOS中CoreGraphics框架是一个二维的绘制引擎,通常被称作Quartz 2D,Quartz 2D可以与其...

  • iOS-给View添加虚线

    Quartz 2D绘制 - (void)addBorderToLayer2:(UIView*)view { C...

网友评论

      本文标题:Quartz 2D绘制路径实例

      本文链接:https://www.haomeiwen.com/subject/txyosftx.html