PScalePopAnimation 动画的实现原理

主要用到如下函数:

//重置。重新计算参数。
-(void)resetMinView:(UIView *)minView targetView:(UIView *)targetView;

  • minView 参数 主要对应的是UITableViewCell,每一个Cell展示的就是名片top的那一部分。
  • targetView 参数 主要对应的是完整的一整张名片。接收infoView作为参数传递过来。

-(void)scaleTargetToMinScale:(BOOL)animate callDelegate:(BOOL)callDelegate;

//坐标变换 CGRect minViewFrame = self._minView.frame; minViewFrame = [self._targetView.superview convertRect:minViewFrame fromView:self._minView.superview];

以上代码的主要作用就是, minViewFrame 指的是cell在tableView中的位置,然后通过坐标转换成,在PHomeViewController中view的位置。就是说,将cell的位置映射到PHomeViewController中view 中的位置。

=========================================

//
float a = minViewFrame.size.width / self._minViewRefrencedMaxSize.width;
float b = minViewFrame.size.height / self._minViewRefrencedMaxSize.height;
#####以上a,b 参数的作用暂时还不是很了解。

float targetScaleX = minViewFrame.size.width / _targetViewOriginalFrame.size.width;
float targetScaleY = minViewFrame.size.height / _targetViewOriginalFrame.size.height;
#####以上参数targetScaleX,targetScaleY的作用其实就是就是对targetView 进行缩放的参数。就是首先将targetView缩放到minViewFrame所在的位置。
之后设置targetToCenter

targetToCenter = self._minView.center; targetToCenter = [self._targetView.superview convertPoint:targetToCenter fromView:self._minView.superview]; self._targetView.center = targetToCenter;

综上所说,首先就是把targetView进行缩放,缩放的位置就是对cell做影射,影射到PHomeViewController的view所在的位置。

==================================

下面这个函数就是对上边缩放的targetView进行伸长动画的效果

-(void)scaleTargetToMaxScale:(BOOL)animate callDelegate:(BOOL)callDelegate;

其中,表明不对原来进行任何的缩放或者伸长处理。因为之前源目标是缩放过的,后来放大的目标是不做任何改变处理的。所以进行动画的时候,就相当于做动画的时候,进行了放大的处理。同时改变center的位置。
CGAffineTransform targetViewToTransform = CGAffineTransformIdentity;

self._targetView.transform = targetViewToTransform;
self._targetView.center = targetToCenter;

你可能感兴趣的:(PScalePopAnimation 动画的实现原理)