• 使用 CGContextRef 进行简单内容绘制


    摘要 : CGContextRef 功能强大,我们借助它可以画各种图形。这里所举例子只是简单内容绘制,冰山一角,对此感兴趣的朋友可以举一反三,实现各种酷炫效果。

    效果如下:

    KMDrawView.h

    1 #import <UIKit/UIKit.h>
    2 
    3 @interface KMDrawView : UIView
    4 
    5 @end

    KMDrawView.m

     1 #import "KMDrawView.h"
     2 
     3 @interface KMDrawView ()
     4 - (void)drawFont;
     5 - (void)drawLine;
     6 - (void)drawCircle;
     7 - (void)drawRectangle;
     8 
     9 @end
    10 
    11 @implementation KMDrawView
    12 
    13 - (instancetype)initWithFrame:(CGRect)frame{
    14     if (self=[super initWithFrame:frame]) {
    15         self.backgroundColor = [UIColor colorWithWhite:0.7 alpha:1.0];
    16     }
    17     return self;
    18 }
    19 
    20 - (void)drawRect:(CGRect)rect {
    21     [self drawFont];
    22     [self drawLine];
    23     [self drawCircle];
    24     [self drawRectangle];
    25     
    26     [super drawRect:rect];
    27 }
    28 
    29 #pragma mark - 绘制『文字』、『线条』、『圆形』、『矩形』
    30 - (void)drawFont {
    31     NSDictionary *dicAttribute = @{
    32                                    NSForegroundColorAttributeName : [UIColor brownColor],
    33                                    NSFontAttributeName : [UIFont systemFontOfSize:18.0]
    34                                    };
    35     
    36     [@"我是文字" drawInRect:CGRectMake(20.0, 20.0, 100.0, 30.0) withAttributes:dicAttribute];
    37 }
    38 
    39 - (void)drawLine {
    40     CGContextRef contextRef = UIGraphicsGetCurrentContext(); //获取绘制上下文对象实例
    41     CGContextSetRGBStrokeColor(contextRef, 0.5, 0.5, 0.5, 1.0); //设置笔画颜色
    42     CGContextSetLineWidth(contextRef, 2.0); //设置线条粗细大小
    43     
    44     CGContextMoveToPoint(contextRef, 20.0, 100.0); //设置直线的首端
    45     CGContextAddLineToPoint(contextRef, 320.0, 100.0); //设置直线的末端
    46     CGContextStrokePath(contextRef); //沿着要求的路径,开始绘制
    47 }
    48 
    49 - (void)drawCircle {
    50     CGContextRef contextRef = UIGraphicsGetCurrentContext(); //获取绘制上下文对象实例
    51     CGContextSetRGBStrokeColor(contextRef, 1.0, 1.0, 1.0, 1.0); //设置笔画颜色
    52     CGContextSetLineWidth(contextRef, 2.0); //设置线条粗细大小
    53     
    54     //voidCGContextAddArc(CGContextRef c,CGFloat x,CGFloat y,CGFloat radius,CGFloat startAngle,CGFloat endAngle,int clockwise)
    55     //1弧度=180°/π(≈57.3°)度
    56     //360°=360 * π/180=2π弧度
    57     //x,y为圆点坐标,radius半径,startAngle为开始的弧度,endAngle为结束的弧度,clockwise0为顺时针,1为逆时针。
    58     CGContextAddArc(contextRef, 70.0, 200.0, 50.0, 0, 2*M_PI, 0); //添加一个圆;M_PI为180度
    59     CGContextDrawPath(contextRef, kCGPathStroke); //绘制路径
    60 }
    61 
    62 - (void)drawRectangle {
    63     CGContextRef contextRef = UIGraphicsGetCurrentContext(); //获取绘制上下文对象实例
    64     CGContextSetRGBStrokeColor(contextRef, 0.0, 0.0, 0.0, 1.0); //设置笔画颜色
    65     CGContextSetLineWidth(contextRef, 2.0); //设置线条粗细大小
    66     
    67     CGContextAddRect(contextRef, CGRectMake(20.0, 300.0, 200.0, 100.0)); //设置矩形位置和宽高
    68     CGContextStrokePath(contextRef); //沿着要求的路径,开始绘制
    69 }
    70 
    71 @end

    ViewController.h

    1 #import <UIKit/UIKit.h>
    2 
    3 @interface ViewController : UIViewController
    4 
    5 
    6 @end

    ViewController.m

     1 #import "ViewController.h"
     2 #import "KMDrawView.h"
     3 
     4 @interface ViewController ()
     5 - (void)layoutUI;
     6 @end
     7 
     8 @implementation ViewController
     9 
    10 - (void)viewDidLoad {
    11     [super viewDidLoad];
    12     
    13     [self layoutUI];
    14 }
    15 
    16 - (void)didReceiveMemoryWarning {
    17     [super didReceiveMemoryWarning];
    18     // Dispose of any resources that can be recreated.
    19 }
    20 
    21 - (void)layoutUI {
    22     KMDrawView *drawView = [[KMDrawView alloc] initWithFrame:self.view.frame];
    23     [self.view addSubview:drawView];
    24 }
    25 
    26 @end
  • 相关阅读:
    调用外部程序主窗体做子窗体
    查看window编码
    c# 数据库更新和界面刷新的问题
    c# datagridview代码(网上的)
    winform DataGridView控件的打印
    西电ubuntu更新软件源
    C++ primer 学习笔记(2):函数
    C++ Primer 学习笔记(1)——迭代器,数组
    查询表属于哪个数据
    oracle 实用语句
  • 原文地址:https://www.cnblogs.com/huangjianwu/p/4609252.html
Copyright © 2020-2023  润新知