一、绘制图像
Core Graphics 也是支持绘制图片图像的,而且
UIKit 中对这个做了封装,方便我们使用。
1,绘制到指定的矩形中
使用这种方式的话图片会自动进行拉伸。如果矩形比例不对,图片会变形。
import
UIKit
class
ViewController
:
UIViewController
{
override
func
viewDidLoad() {
super
.viewDidLoad()
let
frame =
CGRect
(x: 30, y: 30, width: 250, height: 100)
let
cgView =
CGView
(frame: frame)
self
.view.addSubview(cgView)
}
override
func
didReceiveMemoryWarning() {
super
.didReceiveMemoryWarning()
}
}
class
CGView
:
UIView
{
override
init
(frame:
CGRect
) {
super
.
init
(frame: frame)
//设置背景色为透明,否则是黑色背景
self
.backgroundColor =
UIColor
.clear
}
required
init
?(coder aDecoder:
NSCoder
) {
fatalError(
"init(coder:) has not been implemented"
)
}
override
func
draw(_ rect:
CGRect
) {
super
.draw(rect)
//获取图像
let
image =
UIImage
(named:
"image1.jpg"
)
//绘制到指定的矩形中(大小不合适会自动进行拉伸)
image?.draw(
in
:
self
.bounds)
}
}
|
2,从指定点开始绘制
这种方式图片尺寸大小、比例都不变,如果显示区域不够的话就会显示不全。
class
CGView
:
UIView
{
override
init
(frame:
CGRect
) {
super
.
init
(frame: frame)
//设置背景色为透明,否则是黑色背景
self
.backgroundColor =
UIColor
.clear
}
required
init
?(coder aDecoder:
NSCoder
) {
fatalError(
"init(coder:) has not been implemented"
)
}
override
func
draw(_ rect:
CGRect
) {
super
.draw(rect)
//获取图像
let
image =
UIImage
(named:
"image1.jpg"
)
//从指定点开始绘制
image?.draw(at:
CGPoint
(x: 0, y: 0))
}
}
|
二、变换(Transform)的使用
我们除了可以通过对视图
View 进行变换,实现平移旋转缩放操作外。对于绘图上下文,也是可以进行变换的。
(1)上面样例我们对绘图上下文做平移、缩放、旋转变换操作后,对接下来的所有绘图操作都会起作用。这里是使用图像作为演示,如果绘制其它图形同理。
(2)在对绘图上下文进行变换前我们可以先把当前默认状态保存下来,这样绘图完毕后可以还原回去。方便后续操作。
class
CGView
:
UIView
{
override
init
(frame:
CGRect
) {
super
.
init
(frame: frame)
//设置背景色为透明,否则是黑色背景
self
.backgroundColor =
UIColor
.clear
}
required
init
?(coder aDecoder:
NSCoder
) {
fatalError(
"init(coder:) has not been implemented"
)
}
override
func
draw(_ rect:
CGRect
) {
super
.draw(rect)
//获取绘图上下文
guard
let
context =
UIGraphicsGetCurrentContext
()
else
{
return
}
//保存初始状态
context.saveGState()
//变换1:向左向下本别平移10点
context.translateBy(x: 10, y: 10)
//变换2:缩放成0.1
context.scaleBy(x: 0.1, y: 0.1)
//变换3:旋转10度
context.rotate(by:
CGFloat
.pi/18)
//获取图像
let
image =
UIImage
(named:
"image1.jpg"
)
//从指定点开始绘制
image?.draw(at:
CGPoint
(x: 0, y: 0))
//恢复成初始状态
context.restoreGState()
}
}
|