UIBezierPath 簡單使用


##題外蛋
在開始討論UIBezierPath之前,我小小的扯一個一個題外蛋,前不久剛剛決定好好做我自己的博客事業,斗志滿滿的去理解歸納一些概念,如前一段時間寫的@property。不過最近在看了`《Objective-C 高級編程》`后,發現自己的歸納真是停留在最淺顯的一面上,為什么@property能達到相應的效果這些東西都沒有明白理解。 

當時就如同頭上被破了一盆冷水,果然基礎的東西,理解歸納起來越是不簡單,不過這樣也讓自己明白了自己的斤兩,這也是一種利處。明白了自己的知識水平后,我決定還是踏實點,不要想着一步登天,還是踏踏實實的記錄自己能力范圍內的知識,慢慢的提高自己。

放緩浮躁的心,慢慢去進步吧。

##UIBezierPath
現在進入正題。   
UIBezierPath這個類呢主要用於繪圖。  
之前的項目中需要繪圖的部分都是用`Core Graphics`來繪制,OC是我的第一門語言,所以對於`Core Graphics`的C語言`API`不太適應,最近發現原來蘋果的`UIKit`中已經對`Core Graphics`做了一些簡單的封裝,`UIBezierPath`就是其中一個。`UIBezierPath`已經完全滿足了我對繪圖的一些基本要求。

UIBezierPath的好處顯而易見。  
* 首先它是`OC`語言的,相對於c語言的Core Graphics來說更為平易近人。
* 其次它能夠使用`ARC`,如果我們直接使用CGPathRef的話,還要自己負責在合適的時候釋放。



現在我就根據自己的使用來做一下簡單記錄。

##使用
UIBezierPath的使用相當簡單,分為三步:  
* 創建path
* 添加路徑到path
* 將path繪制出來

例如我們來畫條線:
```objc
    // 創建path
    UIBezierPath *path = [UIBezierPath bezierPath];
    
    // 添加路徑[1條點(100,100)到點(200,100)的線段]到path
    [path moveToPoint:CGPointMake(100 , 100)];
    [path addLineToPoint:CGPointMake(200, 100)];
    
    // 將path繪制出來
    [path stroke];
```

同樣的我們也可以畫一個圓
```objc
    UIBezierPath *path = [UIBezierPath bezierPath];
    [path addArcWithCenter:self.center radius:100.0 startAngle:0.0 endAngle:180.0 clockwise:YES];
    [path stroke];
```


除了畫線、畫圓之外,我們還可以畫其他各種圖形。 具體的方法你都可以在UIBezierPath的頭文件里面找到,而使用過程和Core Graphics基本一致。 其中有一個地方是需要我們注意的。就是顏色的設置。 UIBezierPath顏色的設置並沒有包含在自己類中,而是通過UIColor直接設置的。 例: ```objc // 設置描邊色 [[UIColor blueColor] setStroke]; // 設置填充色 [[UIColor redColor] setFill]; ``` 看上去是UIColor的方法,其實也是對於CGContextRef的渲染,最終還是作用到CGConextRef上的 而UIBezierPath其實也就是對CGPathRef的封裝 所以UIBezierPath通過UIColor的方法來設置顏色也就不奇怪了。 因為UIColor和UIBezierPath最終還是通過Core Graphics的方法來繪圖的,只不過蘋果又封裝了一層OC。 最后結合上面那個畫圓的例子,把顏色添加進去,再來看下效果。 ``` //創建path UIBezierPath *path = [UIBezierPath bezierPath]; // 添加圓到path [path addArcWithCenter:self.center radius:100.0 startAngle:0.0 endAngle:M_PI*2 clockwise:YES]; // 設置描邊寬度(為了讓描邊看上去更清楚) [path setLineWidth:5.0]; //設置顏色(顏色設置也可以放在最上面,只要在繪制前都可以) [[UIColor blueColor] setStroke]; [[UIColor redColor] setFill]; // 描邊和填充 [path stroke]; [path fill]; ```


UIBezierPath繪圖是不是相當的簡單。當然簡單的使用也可以有很炫的效果,具體你可以自行查閱文檔,里面可以有很多變化哦。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM