IOS繪制虛線的方法總結(jié)
一、重寫drawRect方法。
- (void)drawRect:(CGRect)rect
{
[super drawRect:rect];
CGContextRef currentContext = UIGraphicsGetCurrentContext();
//設(shè)置虛線顏色
CGContextSetStrokeColorWithColor(currentContext, [UIColor BlackColor].CGColor);
//設(shè)置虛線寬度
CGContextSetLineWidth(currentContext, 1);
//設(shè)置虛線繪制起點(diǎn)
CGContextMoveToPoint(currentContext, 0, 0);
//設(shè)置虛線繪制終點(diǎn)
CGContextAddLineToPoint(currentContext, self.frame.origin.x + self.frame.size.width, 0);
//設(shè)置虛線排列的寬度間隔:下面的arr中的數(shù)字表示先繪制3個(gè)點(diǎn)再繪制1個(gè)點(diǎn)
CGFloat arr[] = {3,1};
//下面最后一個(gè)參數(shù)“2”代表排列的個(gè)數(shù)。
CGContextSetLineDash(currentContext, 0, arr, 2);
CGContextDrawPath(currentContext, kCGPathStroke);
}
二、采用CAShapeLayer方式繪制虛線
CAShapeLayer *shapeLayer = [CAShapeLayer layer]; [shapeLayer setBounds:self.bounds]; [shapeLayer setPosition:CGPointMake(self.frame.size.width / 2.0, self.frame.size.height)]; [shapeLayer setFillColor:[UIColor clearColor].CGColor]; //設(shè)置虛線顏色 shapeLayer setStrokeColor:[UIColor BlackColor].CGColor]; //設(shè)置虛線寬度 [shapeLayer setLineWidth:self.frame.size.height]; [shapeLayer setLineJoin:kCALineJoinRound]; //設(shè)置虛線的線寬及間距 [shapeLayer setLineDashPattern:[NSArray arrayWithObjects:[NSNumber numberWithInt:3], [NSNumber numberWithInt:1], nil]]; //創(chuàng)建虛線繪制路徑 CGMutablePathRef path = CGPathCreateMutable(); //設(shè)置虛線繪制路徑起點(diǎn) CGPathMoveToPoint(path, NULL, 0, 0); //設(shè)置虛線繪制路徑終點(diǎn) CGPathAddLineToPoint(path, NULL, self.frame.size.width, 0); //設(shè)置虛線繪制路徑 [shapeLayer setPath:path]; CGPathRelease(path); //添加虛線 [self.layer addSublayer:shapeLayer];
關(guān)于這種方式已經(jīng)有人整理出了一個(gè)非常好用的類方法,具體見下面這段代碼,注意:下面非完整代碼,如有需要,請(qǐng)自己百度搜索。
/**
** lineView: 需要繪制成虛線的view
** lineLength: 虛線的寬度
** lineSpacing: 虛線的間距
** lineColor: 虛線的顏色
**/
+ (void)drawDashLine:(UIView *)lineView lineLength:(int)lineLength lineSpacing:(int)lineSpacing lineColor:(UIColor *)lineColor
{
CAShapeLayer *shapeLayer = [CAShapeLayer layer];
.....
[shapeLayer setStrokeColor:lineColor.CGColor];
......
[shapeLayer setLineDashPattern:[NSArray arrayWithObjects:[NSNumber numberWithInt:lineLength], [NSNumber numberWithInt:lineSpacing], nil]];
......
[lineView.layer addSublayer:shapeLayer];
}
三、經(jīng)濟(jì)實(shí)惠型:采用貼圖的方式繪制虛線(需要設(shè)計(jì)師切圖配合)
UIImageView *imgDashLineView =[[UIImageView alloc] initWithFrame:CGRectMake(15, 200, self.view.frame.size.width - 30, 1)]; [imgDashLineView setBackgroundColor:[UIColor colorWithPatternImage:[UIImage imageNamed:@"xuxian.png"]]]; [self.view addSubview:imgDashLineView];
總結(jié)
以上內(nèi)容部分來自于網(wǎng)絡(luò),本著分享的學(xué)習(xí)精神,如有涉及侵權(quán)問題,請(qǐng)及時(shí)告知。以上就是這篇文章的全部?jī)?nèi)容,歡迎大家一起探討學(xué)習(xí),有問題請(qǐng)留言,小編將會(huì)盡快對(duì)你的問題進(jìn)行回復(fù)。
相關(guān)文章
iOS中利用CAEmitterLayer實(shí)現(xiàn)粒子動(dòng)畫詳解
粒子效果應(yīng)該對(duì)現(xiàn)在很多人來說并不陌生,我們之前也分享了一些相關(guān)文章,下面這篇文章主要給大家介紹了關(guān)于iOS中利用CAEmitterLayer實(shí)現(xiàn)粒子動(dòng)畫的相關(guān)資料,文中介紹的非常詳細(xì),需要的朋友們下面來一起看看吧。2017-06-06
iOS開發(fā)中UITableview控件的基本使用及性能優(yōu)化方法
這篇文章主要介紹了iOS開發(fā)中UITableview控件的基本使用及性能優(yōu)化方法,代碼基于傳統(tǒng)的Objective-C,需要的朋友可以參考下2015-12-12
iOS tableView實(shí)現(xiàn)頭部拉伸并改變導(dǎo)航條漸變色
這篇文章主要為大家詳細(xì)介紹了iOS tableView實(shí)現(xiàn)頭部拉伸并改變導(dǎo)航條漸變色,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-05-05
iOS統(tǒng)計(jì)項(xiàng)目的代碼總行數(shù)
最近一個(gè)項(xiàng)目有段時(shí)間了,不知道怎樣可以統(tǒng)計(jì)出寫了多少行代碼,如何處理這個(gè)問題呢,下面我們來探討下。2015-06-06
iOS中讀寫鎖的簡(jiǎn)單實(shí)現(xiàn)方法實(shí)例
讀寫鎖是計(jì)算機(jī)程序的并發(fā)控制的一種同步機(jī)制,也稱“共享-互斥鎖”、多讀者-單寫者鎖,讀操作可并發(fā)重入,寫操作是互斥的,這篇文章主要給大家介紹了關(guān)于iOS中讀寫鎖的簡(jiǎn)單實(shí)現(xiàn)方法,需要的朋友可以參考下2021-11-11
iOS開發(fā)中常見的解析XML的類庫以及簡(jiǎn)要安裝方法
這篇文章主要介紹了iOS開發(fā)中常見的解析XML的類庫以及簡(jiǎn)要安裝方法,簡(jiǎn)要地說明了在Xcode下的一些特點(diǎn)以供對(duì)比,需要的朋友可以參考下2015-10-10

