美文网首页iOS自我学习库程序员iOS开发笔录
IOS开发 图形绘制,绘制线条,矩形,和垂直和居中绘制文字

IOS开发 图形绘制,绘制线条,矩形,和垂直和居中绘制文字

作者: 张云飞Vir | 来源:发表于2016-06-23 14:05 被阅读2369次

概述

吐槽下IOS下 的图形绘图,代码冗长,不得不自己重新封装方法。整理形成本文。

绘制线

// 绘制直线
+ (void)toDrawLineFromX:(CGFloat)x1 Y:(CGFloat)y1 toX:(CGFloat)x2 toY:(CGFloat)y2 context:(CGContextRef)con{
    CGContextMoveToPoint(con, x1, y1);
    CGContextAddLineToPoint(con, x2, y2);
    CGContextSetLineWidth(con, 1);
    CGContextStrokePath(con);
}

绘制矩形

//绘制矩形 ,fillColor填充色
+ (void)toDrawRect:(CGRect)rectangle color:fillColor context:(CGContextRef)ctx{
    
    //创建路径并获取句柄
    CGMutablePathRef
    path = CGPathCreateMutable();
    //将矩形添加到路径中
    CGPathAddRect(path,NULL,
                  rectangle);
    //获取上下文
    //将路径添加到上下文
    
    CGContextAddPath(ctx,
                     path);
    
    //设置矩形填充色
    [fillColor setFill];
    //矩形边框颜色
    [[UIColor
      whiteColor] setStroke];
    //边框宽度
    CGContextSetLineWidth(ctx,0);
    //绘制
    CGContextDrawPath(ctx,
                      kCGPathFillStroke);
    CGPathRelease(path);
}

垂直和居中绘制文字

///绘制文字,rect1指定矩形,绘制文字在这个矩形水平和垂直居中
+ (void)toDrawTextWithRect:(CGRect)rect1 str:(NSString*)str1 context:(CGContextRef)context{
    if( str1 == nil || context == nil)
        return;
    
    CGContextSetLineWidth(context, 1.0);
    CGContextSetRGBFillColor (context, 0.01, 0.01, 0.01, 1);
    
    //段落格式
    NSMutableParagraphStyle *textStyle = [[NSMutableParagraphStyle defaultParagraphStyle] mutableCopy];
    textStyle.lineBreakMode = NSLineBreakByWordWrapping;
    textStyle.alignment = NSTextAlignmentCenter;//水平居中
    //字体
    UIFont  *font = [UIFont boldSystemFontOfSize:22.0];
    //构建属性集合
    NSDictionary *attributes = @{NSFontAttributeName:font, NSParagraphStyleAttributeName:textStyle};
    //获得size
    CGSize strSize = [str1 sizeWithAttributes:attributes];
    CGFloat marginTop = (rect1.size.height - strSize.height)/2;
    //垂直居中要自己计算
    CGRect r = CGRectMake(rect1.origin.x, rect1.origin.y + marginTop,rect1.size.width, strSize.height);
    [str1 drawInRect:r withAttributes:attributes];
}

如何使用

假设把上面的方法放入到一个类 DrawUtil 中,我们可以通过 DrawUtil 来调用方法。

  定义: #define drawLine(x1,y1,x2,y2,con) [DrawUtil toDrawLineFromX:x1 Y:y1 toX:x2 toY:y2 context:con]

   //获得上下文
  CGContextRef con = UIGraphicsGetCurrentContext();
     CGContextClearRect(con, rect);

  //画线,
  drawLine(x,y,x+rectWidth,y,con);

  //矩形
    [DrawUtil toDrawRect:CGRectMake(x*unitWidth+1, y*unitHeight+1,unitWidth-1, unitHeight-1) color:[UIColor whiteColor] context:con];

    //文字
  [DrawUtil toDrawTextWithRect:rect1 str:@"你" context:context];

相关文章

  • IOS开发 图形绘制,绘制线条,矩形,和垂直和居中绘制文字

    概述 吐槽下IOS下 的图形绘图,代码冗长,不得不自己重新封装方法。整理形成本文。 绘制线 绘制矩形 垂直和居中绘...

  • Objective-C ios图形各种线条绘制

    IOS 图形绘制 绘制直线 矩形绘制 三角形绘制 任意弧形绘制 圆形绘制 绘制的属性 虚线的绘制 UIView d...

  • Quartz2D绘图基础篇

    Quartz2D的作用: 绘制图形:线条\三角形\矩形\园\孤绘制文字绘制\生成图片读取\生成PDF截图\裁剪图片...

  • Quartz2D绘图

    Quartz 2D的功能 绘制图形:线条、三角形、矩形、圆、弧等。 绘制文字 绘制\生成图片(图像) 读取\生成P...

  • iOS图形绘制框架 ——UIBezierPath 、Core G

    iOS图形绘制框架 ——UIBezierPath 、Core Graphics 和OpenGL iOS图形绘制框架...

  • Quartz2D使用详解

    首先介绍一下使用Quartz2D能做些什么: 绘制图形 : 线条\三角形\矩形\圆\弧等; 绘制文字; 绘制\生成...

  • Quarz2D基础(一)

    Quarz2D可以实现以下内容: 绘制图形:线条/三角形/矩形/圆/弧形/扇形等绘制文字绘制/生成图片读取/生成P...

  • 一、基本图形绘制-画线

    Quarz 2D是一个二维绘图引擎,用它能够:➤绘制图形:线条、三角形、矩形、圆、弧等➤绘制文字➤绘制\生成图片(...

  • iOS 绘制图形

    绘制几种常见图形的类方法。 1.绘制圆形 2.绘制同心圆 3.绘制矩形 4.绘制圆角矩形 5.绘制三角形

  • 2017-04-25 canvas 学习笔记

    canvas 绘制线条 嵌入式不建议使用,会导致内部图片拉伸 绘制表格背景 绘制表格 绘制矩形 绘制画板 绘制弧线...

网友评论

    本文标题:IOS开发 图形绘制,绘制线条,矩形,和垂直和居中绘制文字

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