@interface PCirleEffectPopView : UIView
{
UIView * _maskView;
id<PCirleEffectPopViewDelegate> _delegate;
//
UIView * _minView;
UIView * _targetView;
BOOL _isCurrentMin;
//
CGPoint _reflectCenter;//minView的中心点 在 targetView 中对应的位置,按照targetView的坐标系获取
CGPoint _targetPopedOrigin;//targetView 在self展开后的origin
//innerused
BOOL _isAnimating;//是否在动画
BOOL _isInterruptByTap;
}
@property(nonatomic,readonly) BOOL _isCurrentMin;
@property(nonatomic,assign) id<PCirleEffectPopViewDelegate> _delegate;
@property(nonatomic,retain) UIView * _minView;
@property(nonatomic,retain) UIView * _targetView;
-(void)resetMinView:(UIView *)minView targetView:(UIView *)targetView reflectCenter:(CGPoint) reflectCenter targetPopedOrigin:(CGPoint) targetPopedOrigin;
-(void)circleEffectToMax:(BOOL)animate callDelegate:(BOOL)callDelegate;
-(void)circleEffectToMin:(BOOL)animate callDelegate:(BOOL)callDelegate;
详解参数的作用
_maskView
因为UIView 有个成员变量,maskView.当设置maskView的值的时候,maskView起到一个蒙板的作用,只显示maskView的frame这部分。而UIView 的其它部分就不会显示。_minView
参数_minView的主要作用用来设定_targetView;_targetView
参数_targetView的参数主要作用就是显示名片的具体内容。
当点头像的时候,会出现一个圆圈放大的效果和名片从左上角向右下角移动的效果。
圆圈放大的效果就是利用maskView蒙板的作用。因为当将一个UIView设定maskView的时候,只显示maskView那部分。当利用maskView的transform进行缩放的时候,比如将maskView进行放大的时候,maskView的范围越来越大,可见的UIView的部分就越来越多。同时,改变_targetView 的frame的位置,初始化的时候,将_targetView的位置设置在左上角,进行动画操作的时候,将_targetView的位置在右下角。这样就可以产生移动的效果。
再次点击缩回去的时候,同理,也是改变_targetView的frame的位置,使_targetView从右下角,向左上角移动。同时,对_maskView进行缩小饭范围的操作,使可见的部分越来越小。