畫虛線需要用到函數:
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,如此反覆。