最好的特点就是可以自定义路径,设置圆角和描边都很方便,以下为代码和效果,均在playground中实现
1、首先实现一个圆角矩形,并对此路径描边,为其绘制一个轮廓。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
|
//: 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、下面自定义一条路径,确定几个点,然后像画笔一样连线!
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
|
//: 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、多条子路径也可以。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
|
//: 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的基本用法,用好了将是绘制图形的又一利器。