添加轻拍手势实现点击图片能放大缩小,并且点击处在放缩前后位置不变,就好像点哪里就把哪里变大.
要放大scale倍,就先把原来的宽和高都缩小scale倍,再找到新的原点,这样得到的新的缩小后的矩形区域就是要放大的区域.
为了让点击的点在放缩前后的位置不变,就要让放缩前后该点到原点的距离不变.
以放大3倍为例,红色矩形区域就是要放大的区域,点击处到原点的距离d1应该是到新原点的距离d2的3倍, 这样红色矩形区域放大后点击处到原点的距离才会不变 (d1 = 3 * d2).
如下图
所以新原点的坐标为: x1 = x - x * (1/3); y1 = y - y * (1/3);
[scroll zoomToRect : newRect animated : YES]; 这个方法就是把得到的新矩形区域newRect按照scroll的大小(这里设置的是屏幕大小)放大,即将之前按照相应比例找到的小矩形放大到满屏.
网友评论