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
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 215,133评论 6 497
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,682评论 3 390
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 160,784评论 0 350
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,508评论 1 288
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,603评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,607评论 1 293
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,604评论 3 415
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,359评论 0 270
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,805评论 1 307
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,121评论 2 330
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,280评论 1 344
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,959评论 5 339
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,588评论 3 322
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,206评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,442评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,193评论 2 367
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,144评论 2 352

推荐阅读更多精彩内容