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)容部分來(lái)自于網(wǎng)絡(luò),本著分享的學(xué)習(xí)精神,如有涉及侵權(quán)問(wèn)題,請(qǐng)及時(shí)告知。以上就是這篇文章的全部?jī)?nèi)容,歡迎大家一起探討學(xué)習(xí),有問(wèn)題請(qǐng)留言,小編將會(huì)盡快對(duì)你的問(wèn)題進(jìn)行回復(fù)。
相關(guān)文章
IOS UIImagePickerController從拍照、圖庫(kù)、相冊(cè)獲取圖片
這篇文章主要介紹了IOS UIImagePickerController從拍照、圖庫(kù)、相冊(cè)獲取圖片的相關(guān)資料,希望通過(guò)本文能幫助到大家,需要的朋友可以參考下2017-09-09iOS UITableView 拖動(dòng)排序?qū)崿F(xiàn)代碼
這篇文章主要為大家詳細(xì)介紹了iOS UITableView 拖動(dòng)排序?qū)崿F(xiàn)代碼,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2016-09-09iOS應(yīng)用內(nèi)實(shí)現(xiàn)跳轉(zhuǎn)到手機(jī)淘寶天貓的方法
這篇文章主要給大家介紹了關(guān)于iOS應(yīng)用內(nèi)如何實(shí)現(xiàn)跳轉(zhuǎn)到手機(jī)淘寶天貓的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來(lái)一起學(xué)習(xí)學(xué)習(xí)吧。2017-12-12iOS中UIAlertController設(shè)置自定義標(biāo)題與內(nèi)容的方法
UIAlertController是iOS8推出的新概念,取代了之前的 UIAlertView和UIActionSheet(雖然現(xiàn)在仍可以使用,但是會(huì)有警告)。下面這篇文章主要給大家介紹了關(guān)于iOS中UIAlertController如何設(shè)置自定義標(biāo)題與內(nèi)容的相關(guān)資料,需要的朋友可以參考下。2017-10-10IOS開發(fā) UIAlertController詳解及實(shí)例代碼
這篇文章主要介紹了 IOS開發(fā) UIAlertController詳解及實(shí)例代碼的相關(guān)資料,需要的朋友可以參考下2016-12-12iOS動(dòng)畫解析之圓球加載動(dòng)畫XLBallLoading的實(shí)現(xiàn)
加載動(dòng)畫對(duì)大家來(lái)說(shuō)都不陌生,我們?cè)谄綍r(shí)都會(huì)遇見,開發(fā)中也必不可少,所以下面這篇文章主要給大家介紹了關(guān)于iOS動(dòng)畫解析之圓球加載動(dòng)畫XLBallLoading實(shí)現(xiàn)的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),需要的朋友可以參考借鑒,下面來(lái)一起看看吧。2017-11-11iOS開發(fā)輸入自動(dòng)填充UITextField背景色
如何在iOS中實(shí)現(xiàn)輸入時(shí)自動(dòng)填充背景色的效果,首先,我們?cè)O(shè)置UITextField的背景色為初始顏色,然后,通過(guò)設(shè)置UITextField的代理,并監(jiān)聽UITextField的輸入事件,我們?cè)谟脩糸_始輸入時(shí)將其背景色改變?yōu)楦吡令伾?在用戶結(jié)束輸入時(shí)恢復(fù)為初始顏色2023-10-10iOS實(shí)現(xiàn)一個(gè)簡(jiǎn)易日歷代碼
本篇文章主要介紹了iOS實(shí)現(xiàn)一個(gè)簡(jiǎn)易日歷代碼,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2017-03-03iOS遍歷集合(NSArray、NSDictionary、NSSet)的方法總結(jié)
這篇文章主要介紹了iOS集合遍歷(NSArray、NSDictionary、NSSet)的方法,文中給出了詳細(xì)的方法示例,并總結(jié)了各個(gè)方法的優(yōu)缺點(diǎn)來(lái)供大家學(xué)習(xí)參考,需要的朋友們下面來(lái)一起看看吧。2017-03-03