天天看點

iOS(總結)繪圖&漸變&NStimer

一:

1.單線

1).初始化

    CGContextRef ctx =UIGraphicsGetCurrentContext();

2).起始點坐标,第一個為上下文,後兩個是坐标,起點坐标

    CGContextMoveToPoint(ctx,15, 50);

3)終點坐标,第一個為上下文,後兩個是坐标,終點坐标

    CGContextAddLineToPoint(ctx,150, 50);

4).設定線的width

    CGContextSetLineWidth(ctx,10);

5).設定線的顔色

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

6).畫線,将線展示出來

    CGContextStrokePath(ctx);

2.多線

7).初始化

    CGContextRef ctx =UIGraphicsGetCurrentContext();

8).設定線的寬度

    CGContextSetLineWidth(ctx,5);

9).設定連結的樣式

    CGContextSetLineJoin(ctx,kCGLineJoinRound);

10).設定連結端的樣式

    CGContextSetLineCap(ctx,kCGLineCapRound);

11).定義點數組

    CGPoint points[] = {CGPointMake(50,50),CGPointMake(50,100),CGPointMake(100,200),CGPointMake(50,50),};

12).添加點,第一個為上下文,第二個為點的數組,第三個是有效的點數

   CGContextAddLines(ctx, points, 4);

13).畫線顯示出來

    CGContextStrokePath(ctx);

3.點線

14).初始化

    CGContextRef ctx =UIGraphicsGetCurrentContext();

15).第一個參數上下問,第二個參數phase在第二次繪制時由第一個參數減去後在繼續繪制,第三個參數為長度數組,第四個參數為有效數量

   CGFloat lengths[] = {10,3,20};

   CGContextSetLineDash(ctx, 0, lengths, 4);

起始點

    CGContextMoveToPoint(ctx,50, 150);

終點

    CGContextAddLineToPoint(ctx,70, 600);

16).畫線顯示

    CGContextStrokePath(ctx);

4.設定矩形

17).設定矩形的顔色,邊框的顔色

    [[UIColorblueColor]setStroke];

18).設定填充的顔色

    [[UIColororangeColor]setFill];

    UIRectFill(CGRectMake(100,100, 200, 300));

19).設定矩形的大小

    UIRectFrame(CGRectMake(100,100, 200, 300));

或者如下:

初始化

    CGContextRef ctx =UIGraphicsGetCurrentContext();

20).設定填充的顔色

    CGContextSetRGBFillColor(ctx,0, 1,0, 1);

21).設定線條的顔色

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

22).設定線的寬度

    CGContextSetLineWidth(ctx,10);

23).添加矩形

    CGContextAddRect(ctx,CGRectMake(100,100, 200, 300));

24).設定填充實作

    CGContextDrawPath(ctx,kCGPathFillStroke);

5.圓

25).初始化

    CGContextRef ctx =UIGraphicsGetCurrentContext();

26).設定填充的顔色

    CGContextSetRGBFillColor(ctx,0, 1,1, 1);

27).設定圓的位置和大小

    CGContextAddEllipseInRect(ctx,CGRectMake(50,50, 100, 100));

28).填充的效果

    CGContextDrawPath(ctx,kCGPathFillStroke);

6.扇形

29).初始化

    CGContextRef ctx =UIGraphicsGetCurrentContext();

30).設定第一個上下文,第二個三個,表示扇形的圓心坐标,四表示半徑,五和六表示扇形的起始角度和終止角度,參數7表示順時針還是逆時針1是逆時針,

   CGContextAddArc(ctx, 160, 200, 100,0, M_PI, 0);

31).設定填充的顔色

    CGContextSetFillColorWithColor(ctx, [UIColorblackColor].CGColor);

32).設定填充的顔色

    CGContextDrawPath(ctx,kCGPathFillStroke);

7.字

初始化

    CGContextRef ctx =UIGraphicsGetCurrentContext();

33).設定背景的陰影顔色,第二個參數是陰影的偏移量,第三個參數是模糊度

    CGContextSetShadowWithColor(ctx,CGSizeMake(10,10), 5,[UIColororangeColor].CGColor);

34).第一個參數,設定文字的位置,第二個參數是一個字典樣式,用來設定字型的一些屬性

    [@"hello world"drawAtPoint:CGPointMake(50,100) withAttributes:@{NSForegroundColorAttributeName:[UIColorredColor]}];

8.貝塞爾曲線

添加一個二階貝賽爾曲線 

參數:

    CGContextAddQuadCurveToPoint(ctx,200, 50, 300,150);

3階:

初始化

    CGContextRef ctx =UIGraphicsGetCurrentContext();

39).設定起始點

    CGContextMoveToPoint(ctx,50, 200);

40).第二個參數,第三個四個五個六個參數是控制點,第六個和第七個參數表示的是終點的坐标

    CGContextAddCurveToPoint(ctx,100, 1000, 200, -510,400, 200);

41).繪圖

    CGContextStrokePath(ctx);

二:

NSTimer:補充

    1.初始化NSTimer*timer = [NSTimerscheduledTimerWithTimeInterval:1.0/60target:selfselector:@selector(timerAction)userInfo:nilrepeats:YES];

2.一個touch方法

-(void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event

{

隻要調用這個方法,則對應的view會重新執行drawRect方法

    [self.viewsetNeedsDisplay];

設定開始的時間

 [timer setFireDate:[NSDate date]];

}

三:漸變

1.初始化

CGContextRef ctx =UIGraphicsGetCurrentContext();

2.參數一顔色空間

CGColorSpaceRef colorRef =CGColorSpaceCreateDeviceRGB();

3.設定漸變顔色數組

CGFloat components[] = {1,0,0,1,

       0,1,0,1,

       0,0,1,1,

    };

4.位置

CGFloat locations[] = {0,0.5,1};

漸變屬性,

參數一顔色空間.二是顔色.三、位置。四有效數量

   CGGradientRef gtf = CGGradientCreateWithColorComponents(colorRef , components, locations, 3);

5.

線性漸變,第一個參數為上下文,第二個參數//最後一個參數取值0-3

    CGContextDrawLinearGradient(ctx, gtf, CGPointMake(50, 50), CGPointMake(300, 300), 3);

6.

徑向漸變,屬性同上

    CGContextDrawRadialGradient(ctx, gtf,CGPointMake(100,900), 100, CGPointMake(100,200), 150, 0);