之前写过一篇博客,专门讲述了一下如何绘图采用calayer画多边形,这个例子是简单的描述如何绘画出需要的layer层。
下面提出一个新的需求,就是如何绘画出可以缩放的图。这个需求在View上是很难实现的,之前一直在考虑是不是要根据缩放级别计算我们锚点的新位置,因为缩放以后像素点的坐标是会变化的,之前也有人曾经闷头向这个方向专研了很久,可是我们有很easy的方式,干嘛要这么刻板呢?
例如,我们需要汇出美团选择电影票的方格,而且经过缩放效果,依然可以很好的呈现出来。下面我简单说下理论
其实这个并不是很难的东东。
首先我们需要一个scrolview,将scrolview设置为可缩放的,当然你也可以根据需求设置缩放级别。
第二步我们需要一张绿色方格的图片,即没有选中座位的
第二步,我们将这个图片的大小跟scrolview大小是一致的,同时我们需要每一个座椅的像素坐标(x,y,width,height)这样就可以确定某一个座椅的位置了。
第三步,也就是绘图的步骤了,根据第二步提供的像素位置将需要的样子汇出来,(美团的做法实际不是我们需求的绘图,而是很多按钮,但是我这里只是用这个座位作为一个案例讲述绘图的功能,所以有大神质疑的话,我这里可不承担后果。)。
第四步,在第三步的某一个图标汇出要表示选中的效果,我们可以绘制一个简单的方块或者圆形放到座位区域,即可表示出来。
第五步,其实第四步已经结束了,这里需要声明的就是跟之前大家质疑缩放是否会影响绘的图层出现偏移的问题,因为你绘图的时候是根据图片的像素点做绘图的,那么当你缩放图片的时候,实际上你绘的图也就会跟着这个图片缩放。因此会达到我们的绘图图层不会偏移的效果。
好了,这就是如何避免缩放图层绘图偏移的理论知识。