畫虛線需要用到函數:
CGContextSetLineDash
此函數需要四個參數:
- context – 這個不用多說
- phase - 稍後再說
- lengths – 指明虛線是如何交替繪制,具體看例子
- count – lengths數組的長度
- CGContextRef context =UIGraphicsGetCurrentContext();
- CGContextBeginPath(context);
- CGContextSetLineWidth(context, 2.0);
- CGContextSetStrokeColorWithColor(context, [UIColorwhiteColor].CGColor);
- float lengths[] = {10,10};
- CGContextSetLineDash(context, 0, lengths,2);
- CGContextMoveToPoint(context, 10.0, 20.0);
- CGContextAddLineToPoint(context, 310.0,20.0);
- CGContextStrokePath(context);
- CGContextClosePath(context);
lengths的值{10,10}表示先繪制10個點,再跳過10個點,如此反復,如圖:
如果把lengths值改為{10, 20, 10},則表示先繪制10個點,跳過20個點,繪制10個點,跳過10個點,再繪制20個點,如此反復,如圖:
註意count的值等於lengths數組的長度
phase參數表示在第一個虛線繪制的時候跳過多少個點,舉例說明:
- float lengths[] = {10,5};
- CGContextSetLineDash(context, 0, lengths, 2);
- CGContextMoveToPoint(context, 0.0, 20.0);
- CGContextAddLineToPoint(context, 310.0, 20.0);
- CGContextStrokePath(context);
- CGContextSetLineDash(context, 5, lengths, 2);
- CGContextMoveToPoint(context, 0.0, 40.0);
- CGContextAddLineToPoint(context, 310.0, 40.0);
- CGContextStrokePath(context);
- CGContextSetLineDash(context, 8, lengths, 2);
- CGContextMoveToPoint(context, 0.0, 60.0);
- CGContextAddLineToPoint(context, 310.0, 60.);
- CGContextStrokePath(context);
由於lengths值為{10,5},第一條線就是繪制10,跳過5,反復繪制。
第二條線的phase值為5,則首先繪制【10減去5】,再跳過5,繪制10,反復繪制。
第三條給也如此,先繪制2,再跳過5,如此反復。
Tags: count 如何
文章來源: