最好的特點就是可以自定義路徑,設置圓角和描邊都很方便,以下為代碼和效果,均在playground中實現
1、首先實現一個圓角矩形,並對此路徑描邊,為其繪制一個輪廓。
//: Playground - noun: a place where people can play import UIKit class MyView : UIView{ override func drawRect(rect: CGRect) { var pathRect = UIEdgeInsetsInsetRect(self.bounds, UIEdgeInsetsMake(1, 1, 1, 1)) var path = UIBezierPath(roundedRect: pathRect, cornerRadius: 10) path.lineWidth = 4 UIColor.greenColor().setFill() UIColor.blackColor().setStroke() path.fill() path.stroke() } } let viewRect = CGRect(x: 0, y: 0, width: 100, height: 100) let myEmptyView = MyView(frame:viewRect)
tips:所有繪制操作都是按照調用順序進行的。在本段代碼中,我在填充矩形后再對其進行描邊。如果交換對path.fill()和path.stroke()的調用順序,將會得到一個稍有不同的結果,綠色填充將會略微覆蓋黑色描邊,效果圖如下。
2、下面自定義一條路徑,確定幾個點,然后像畫筆一樣連線!
//: Playground - noun: a place where people can play import UIKit class MyView : UIView{ override func drawRect(rect: CGRect) { var bezierPath = UIBezierPath() //創建一個矩形,它的所有邊都內縮5% var drawingRect = CGRectInset(self.bounds, self.bounds.size.width*0.05, self.bounds.size.height*0.05) //確定組成繪畫的點 var topLeft = CGPointMake(CGRectGetMinX(drawingRect), CGRectGetMinY(drawingRect)) var topRight = CGPointMake(CGRectGetMaxX(drawingRect), CGRectGetMinY(drawingRect)) var bottomLeft = CGPointMake(CGRectGetMinX(drawingRect), CGRectGetMaxY(drawingRect)) var bottomRight = CGPointMake(CGRectGetMaxX(drawingRect), CGRectGetMaxY(drawingRect)) var center = CGPointMake(CGRectGetMidX(drawingRect), CGRectGetMinY(drawingRect)) //開始繪制 bezierPath.moveToPoint(topLeft) bezierPath.addLineToPoint(topRight) bezierPath.addLineToPoint(bottomLeft) bezierPath.addCurveToPoint(bottomRight, controlPoint1: center, controlPoint2: center) //使路徑閉合,結束繪制 bezierPath.closePath() //設定顏色,並繪制它們 UIColor.redColor().setFill() UIColor.blackColor().setStroke() bezierPath.fill() bezierPath.stroke() } } let viewRect = CGRect(x: 0, y: 0, width: 100, height: 100) let myEmptyView = MyView(frame:viewRect)
3、多條子路徑也可以。
//: Playground - noun: a place where people can play import UIKit class MyView : UIView{ override func drawRect(rect: CGRect) { //創建一條空Bezier路徑 let bezierPath = UIBezierPath() //為兩個組成部分定義矩形 let squareRect = CGRectInset(rect, rect.size.width*0.45, rect.size.height*0.05) let circleRect = CGRectInset(rect, rect.size.width*0.3, rect.size.height*0.3) let cornerRadius : CGFloat = 20 //創建路徑 let circlePath = UIBezierPath(ovalInRect: circleRect) let squarePath = UIBezierPath(roundedRect: squareRect, cornerRadius: cornerRadius) //將它們添加到主路徑 squarePath.appendPath(circlePath) bezierPath.appendPath(squarePath) //設定顏色並繪制它們 UIColor.redColor().setFill() //繪制路徑 bezierPath.fill() } } let viewRect = CGRect(x: 0, y: 0, width: 100, height: 100) let myEmptyView = MyView(frame:viewRect)
以上就是UIBezierPath的基本用法,用好了將是繪制圖形的又一利器。