CGContextRef

1.NSKernAttributeName: @10 调整字句 kerning 字句调整
 2.NSFontAttributeName : [UIFont systemFontOfSize:_fontSize] 设置字体
 3.NSForegroundColorAttributeName :[UIColor redColor] 设置文字颜色
 4.NSParagraphStyleAttributeName : paragraph 设置段落样式
 5.NSMutableParagraphStyle *paragraph = [[NSMutableParagraphStyle alloc] init];
 paragraph.alignment = NSTextAlignmentCenter;
 6.NSBackgroundColorAttributeName: [UIColor blackColor] 设置背景颜色
 7.NSStrokeColorAttributeName设置文字描边颜色,需要和NSStrokeWidthAttributeName设置描边宽度,这样就能使文字空心.
 NSStrokeWidthAttributeName这个属性所对应的值是一个 NSNumber 对象(小数)。该值改变描边宽度(相对于字体size 的百分比)。默认为 0,即不改变。正数只改变描边宽度。负数同时改变文字的描边和填充宽度。例如,对于常见的空心字,这个值通常为3.0。
 同时设置了空心的两个属性,并且NSStrokeWidthAttributeName属性设置为整数,文字前景色就无效果了
 8 . NSStrikethroughStyleAttributeName 添加删除线,strikethrough删除线
 9 .  NSUnderlineStyleAttributeName 添加下划线
 10 .  NSShadowAttributeName 设置阴影,单独设置不好使,必须和其他属性搭配才好使。
 和这三个任一个都好使,NSVerticalGlyphFormAttributeName,NSObliquenessAttributeName,NSExpansionAttributeName
  11 .NSVerticalGlyphFormAttributeName
 该属性所对应的值是一个 NSNumber 对象(整数)。0 表示横排文本。1 表示竖排文本。在 iOS 中,总是使用横排文本,0 以外的值都未定义。
 12 . NSObliquenessAttributeName设置字体倾斜。
 13 . NSExpansionAttributeName 设置文本扁平化

自定义显示画框的view

#import "CustomView.h"

@implementation CustomView

-(instancetype)initWithFrame:(CGRect)frame{
    self = [super initWithFrame:frame];
    if (self) {
        self.backgroundColor = [UIColor whiteColor];
    }
    return self;
}



-(void)drawRect:(CGRect)rect{
    [super drawRect:rect];
  • 画直线
CGContextRef ctx = UIGraphicsGetCurrentContext();//获取当前画板
CGContextSetLineWidth(ctx, 1.5);//设置线宽
CGContextMoveToPoint(ctx, 10, 10);//设置起点,就是相当于你的笔的下笔处
CGContextAddLineToPoint(ctx, 79, 250);//设置终点,就是你的笔离开纸的那一点,然后就在这两个点之间画了
一条线段
CGContextStrokePath(ctx);
  • 写文字
CGContextSetRGBFillColor(ctx, 1, 0, 0, 1);//颜色
CGContextSetLineWidth(ctx, 0.3); //线宽
[@"huhuh" drawInRect:CGRectMake(10, 90, 200, 50) withAttributes:
         @{NSFontAttributeName:[UIFont systemFontOfSize:54],
NSForegroundColorAttributeName:[UIColor redColor]}];//开始写字
  • 画弧线
CGContextSetRGBStrokeColor(ctx, 0, 0, 1, 1);//改变画笔颜色

CGContextMoveToPoint(ctx, 200, 300);//开始坐标p1
CGContextAddLineToPoint(ctx, 300, 300);
CGContextAddLineToPoint(ctx, 300,400);
CGContextStrokePath(ctx);//绘画路径

CGContextSetRGBStrokeColor(ctx, 1, 0, 0, 1);//改变画笔颜色
CGContextMoveToPoint(ctx, 200, 300);//开始坐标p1
CGContextAddArcToPoint(ctx, 300, 300, 300, 400, 100);
CGContextStrokePath(ctx);//绘画路径

/*---------------------------------------------------------
 CGContextMoveToPoint(context,150,50);//圆弧的起始点
 
 CGContextAddArcToPoint(context,100,80,130,150,50);
 
 是说从(150,50)到(100,80)画一条线,然后再从(100,80)到(130,150)画一条线,
 从这两条线(无限延伸的) 和半径50可以确定一条弧,
 
 而CGContextAddArc(context, 100, 100, 30, 0, M_PI, 1);
 
 比较简单了,(100,100)为圆心的坐标,30为半径,(0,M_PI)为起始角度和结束角度,1为顺时针,0 为逆时针
 
 是说从(150,50)到(100,80)画一条线,然后再从(100,80)到(130,150)画一条线,从这两条线(无限延伸的)
 和半径50可以确定一条弧
 ----------------------------------------------------------------*/

CGContextSetRGBStrokeColor(ctx,1,0,0,1);

CGContextMoveToPoint(ctx,150,50);
CGContextAddLineToPoint(ctx,100,80);
CGContextAddLineToPoint(ctx,130,150);

CGContextMoveToPoint(ctx,150,50);//圆弧的起始点
CGContextAddArcToPoint(ctx,100,80,130,150,50);
CGContextStrokePath(ctx);
  • 画圆
x,y为圆点坐标,radius半径,startAngle为开始的弧度,endAngle为 结束的弧度,clockwise 0为顺时针,1为逆时针
CGContextAddArc(ctx, 100, 400, 80, 0, M_PI, 0);
CGContextStrokePath(ctx);
  • 有填充颜色的圆
CGContextSetRGBFillColor(ctx, 1, 0, 0, 1);
CGContextAddArc(ctx, 100, 550, 70, 0, M_PI , 0);
CGContextDrawPath(ctx, kCGPathFillStroke);/*CGPathDrawingModekCGPathFill填充非零绕数规则
,kCGPathEOFill表示用奇偶规则,kCGPathStroke路径,kCGPathFillStroke路径填充,kCGPathEOFillStroke表
示描线 ,不是填充*/
  • 画矩形
CGContextSetRGBFillColor(ctx, 0, 1, 1, 1);
CGContextAddRect(ctx, CGRectMake(305, 300, 100, 50));
//    CGContextDrawPath(ctx, kCGPathFillStroke);
CGContextStrokePath(ctx);
  • 画扇形,其实就是画圆,设置一下角度。
//二次曲线
CGContextMoveToPoint(ctx, 120, 300);//设置Path的起点
CGContextAddQuadCurveToPoint(ctx,190, 310, 120, 390);//设置贝塞尔曲线的控制点坐标和终点坐标
CGContextStrokePath(ctx);
//三次曲线函数
CGContextMoveToPoint(ctx, 200, 300);//设置Path的起点
CGContextAddCurveToPoint(ctx,250, 280, 250, 400, 280, 300);//设置贝塞尔曲线的控制点坐标和控制点坐标终点坐标
CGContextStrokePath(ctx);

}

@end

你可能感兴趣的:(CGContextRef)