类微信朋友圈图片放大效果,点击图片放大动画

要用到的 就是坐标转换方法

- (CGRect)convertRect:(CGRect)rect toView:(UIView *)view; 


1:我这里演示的是 tableviewHeader上子view 里的一张图片,将其添加到新的view上,并且 由此图片相对于 手机坐标系的点开始放大(类似于微信朋友圈图片的点击放大)。

因为是在项目中使用的, 所以只贴出部分代码, 如有需要可联系,Android的 随后更新


(1):获取所需要放大的 图片frame  在 目标视图 _headerView中的 react

CGRect rectInCell = [_headerViewconvertRect:_headerView.headerBgView.frametoView:_headerView];

(2):获取上一步得到的  react 在 tableview 中的 react

CGRect rectInTableView = [_headerViewconvertRect:rectInCell toView:self.tv];

(3):同上,这样就一步一步的将 所需放大的 图片的 frame 转换到了 相对于屏幕的 位置       

CGRect original = [self.tvconvertRect:rectInTableViewtoView:self.view];


上边三行代码可以用一行来解决 


_headerView.headerBgView.frame_headerView 转换到当前self.view中,并返回self.view中的位置

CGRect re2 = [self.viewconvertRect:_headerView.headerBgView.framefromView:_headerView];



放大过程的思路,用一个容器来承载你所需放大的图片( [..  addsubview] ),然后 [uiview animate…]动画,将图片移动到你所需的位置即可,具体情况根据你的需求来定,此时tableview 上的图片就被你 add到了新的view上边,然后就是点击缩小。



缩小过程思路

将第三步计算出的 react 保留下, 因为缩小图片要按照原轨迹返回,点击事件触发 [uiview animate…]动画,将图片缩小到目标大小 (第三步计算结果original),然后动画结束的时候, tableview 的headerview 重新 addsubview 放大的图片。

你可能感兴趣的:(iOS)