在第10章的UIView的学习中,我们已经了解过iOS系统的坐标系了:以窗口或视图的左上角作为坐标系的原点,从左上往右下依次递增X(水平方向)和Y(垂直方向)的值。当我们需要绘制图形时,需要遵从这个坐标系进行编码。
有时需要对图形坐标系进行改变,我们可以通过修改当前的转换矩阵来实现。CTM(当前变换矩阵)是一个矩阵,它负责将视图坐标系统上的点映射到屏幕上。在UIView的实例调用了draw(_ rect: CGRect)时,这个矩阵就需要被创建好,此时使用Core Graphics提供的函数进行转换矩阵的修改就可以达到改变图形的效果了。
修改转换矩阵是一个通用的做法。如果在图形绘制完成之后有额外的转换操作,建议优先使用转换矩阵,重新绘制图形与之相比会更消耗系统开销。
下面看看如何简单画一条直线在屏幕中,并将其旋转。创建一个工程QuartzDrawLine,并且创建一个新的CocoaTouch类,命名为“QuartzView”,继承自UIView类,示例如下:
动手写15.2.1 QuartzDrawLine->QuartzView.swift
在QuartzView中覆写draw(_ rect: CGRect)的方法,通过UIGraphicsGetCurrentContext获取当前view的图形上下文。setLineWidth方法用于设置曲线的宽度;setStrokeColor用于设置曲线的颜色;move将曲线的起点移至(40,40)处;addLine从起点增加一条线到(80,80)处;strokePath进行路径的绘制。(www.xing528.com)
在View Controller中添加QuartzView到view上:
动手写15.2.2 QuartzDrawLine->ViewController.swift
运行模拟器,如图15.2.1所示:
图15.2.1 QuartzDrawLine模拟器运行结果
一条粗为4.0、颜色为蓝色的直线被绘制在了视图上,起点是坐标系(以视图矩形的左上角作为原点,向右为X轴正方向,向下为Y轴正方向)中x为40、y为40的点,终点是x为80、y为80的点。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。