一区二区三区日韩精品-日韩经典一区二区三区-五月激情综合丁香婷婷-欧美精品中文字幕专区

分享

iOS小知識(shí)點(diǎn)03

 宇智波瞬潤(rùn) 2016-05-10

關(guān)于圖形繪制

今天在項(xiàng)目中有一個(gè)小需求,需要在視圖上繪制一個(gè)圓,內(nèi)部有一個(gè)點(diǎn),點(diǎn)不能超出圓外,于是找了一些關(guān)于圖形繪制方面的資料。以下只記錄一些自己用到的知識(shí)點(diǎn)。
1.view的drawRect方法。該方法不能手動(dòng)調(diào)用,是由系統(tǒng)自動(dòng)調(diào)用的,在需要調(diào)用該方法時(shí)候,可以通過(guò)調(diào)用setNeedsDisplay方法,這時(shí)候系統(tǒng)會(huì)去調(diào)用drawRect方法。一般情況下,創(chuàng)建一個(gè)繼承自UIView的類,在該類中重寫drawRect方法。例如:
一個(gè)繼承自UIView的類MyView,在其MyView.m文件中重寫:
方法一:

-(void)drawRect:(CGRect)rect {

    // 獲取處理的上下文
    CGContextRef context = UIGraphicsGetCurrentContext();
    // 設(shè)置線條樣式
    CGContextSetLineCap(context, kCGLineCapRound);
    // 設(shè)置線條粗細(xì)寬度
    CGContextSetLineWidth(context, 1.0);
    // 設(shè)置顏色
    CGContextSetRGBStrokeColor(context, 0.5, 0.5, 0.5, 1);
    // 開始一個(gè)起始路徑
    CGContextBeginPath(context);
    // 畫圓
    CGContextAddArc(context, 120, 120, 60, 0, M_PI * 2, YES);
    // 連接上面定義的坐標(biāo)點(diǎn)
    CGContextStrokePath(context);
}

方法二:

-(void)drawRect:(CGRect)rect {
// 創(chuàng)建UIBezierPath對(duì)象
UIBezierPath *bezierPath = [UIBezierPath bezierPath];
// 畫圓
[bezierPath addArcWithCenter:CGPointMake(120, 120) radius:60 startAngle:0 endAngle:M_PI * 2 clockwise:YES];
// 設(shè)置線寬
bezierPath.lineWidth = 1;
// 設(shè)置stroke顏色
[[UIColor blackColor] setStroke];
//  繪制
[bezierPath stroke];
}

在控制器中添加該視圖就能看到視圖中的繪制的圓形 .

2.使用CAShapeLayer與UIBezierPath 繪圖

使用CAShapeLayer與UIBezierPath 繪圖可以實(shí)現(xiàn)不在view的drawRect方法中就畫出一些想要的圖形;
步驟:
1.新建UIBezierPath 對(duì)象bezierPath;
2.新建CAShapeLayer對(duì)象caShapeLayer;
3.將bezierPath的CGPath賦值給caShapeLayer的path,即caShapeLayer.path = bezierPath.CGPath;
4.把caShapeLayer添加到某個(gè)顯示該圖形的layer中。

例如,在viewController中作了如下操作

- (void)setUpUI {
CGPoint arcCenter = CGPointMake([UIScreen mainScreen].bounds.size.width/2, 120);
CGFloat radius = 80;
CGFloat startAngle = 0.0;
CGFloat endAngle = M_PI * 2;
// 創(chuàng)建 UIBezierPath對(duì)象
UIBezierPath *bezierPath = [UIBezierPath bezierPathWithArcCenter:arcCenter radius:radius startAngle:startAngle endAngle:endAngle clockwise:YES];
// 創(chuàng)建CAShapeLayer對(duì)象
CAShapeLayer *layer = [[CAShapeLayer alloc] init];
layer.path = bezierPath.CGPath;
layer.fillColor = [UIColor clearColor].CGColor;
layer.strokeColor = [UIColor blackColor].CGColor;
layer.lineWidth = 5;
// 將CAShapeLayer對(duì)象添加到視圖的layer中
[self.view.layer addSublayer:layer];
}

運(yùn)行程序后,會(huì)看到視圖中繪制的圓。

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多

    视频一区二区黄色线观看| 高清不卡视频在线观看| 都市激情小说在线一区二区三区| 国产激情国产精品久久源| 日本人妻熟女一区二区三区| 欧洲日韩精品一区二区三区| 色综合视频一区二区观看| 国产不卡最新在线视频| 国产美女精品午夜福利视频| 欧美欧美日韩综合一区| 好吊日在线视频免费观看| 日本人妻的诱惑在线观看| 亚洲最大的中文字幕在线视频| 办公室丝袜高跟秘书国产| 亚洲精品福利入口在线| 婷婷基地五月激情五月| 国产精品伦一区二区三区在线| 又色又爽又无遮挡的视频| 亚洲一区精品二人人爽久久 | 亚洲欧美日产综合在线网| 亚洲午夜av久久久精品| 午夜激情视频一区二区| 国产精品伦一区二区三区在线 | 亚洲最新中文字幕一区| 亚洲av专区在线观看| 国产不卡免费高清视频| 一区二区三区日韩经典| 精品伊人久久大香线蕉综合| 91久久国产福利自产拍| 亚洲中文字幕在线综合视频| 国产二级一级内射视频播放| 99热在线播放免费观看| 欧美av人人妻av人人爽蜜桃| 国产日本欧美特黄在线观看| 熟女少妇久久一区二区三区| 精品欧美一区二区三久久| 搡老熟女老女人一区二区| 国产精品一区二区香蕉视频 | 日韩在线视频精品中文字幕| 亚洲做性视频在线播放| 久草视频这里只是精品|