circleView动画的实现原理

@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进行缩小饭范围的操作,使可见的部分越来越小。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容