一、前言
前段时间公司做了款棋牌游戏,涉及到各种动画交互,动画弹框就是其中一种,由于对Cocos2D不是很熟,全部用原生写,做的那叫一个舒(hao)爽(kun),还好最终效果棒棒哒,达到了自己满意的要求。
抛砖引玉,在这里说一下自己对iOS动画的感受吧,老铁们都知道动画在iOS是最廉价的,原生的苹果已经封装到了极致,Facebook也开源动画引擎 Pop,让我们实现动画效果既简单又充满活力。但是,让人头疼又无可奈何的是,你想把动画做成想要的效果,需要花费大量时间调试(虽然都说程序猿的审美不咋的,对于喜欢追求完美的人来说,为了达到完美效果,让用户用起来也感觉惊叹,愿意花这个时间,原谅跟我一样有这种性格的老铁们🤗 ),这种没有技术含量的活,我觉得有我一个人干就好了(老铁们此处应该有掌声了😌 ),所以萌生了写一个动画弹框库的想法。
在写动画弹框库之前,自己开发的项目中由于不同业务功能,也写过三款弹框,所以也一直考虑整合一个可以实现绝大部分(至少满足90%以上)需求的弹框,这也是我写动画弹框库的另外一个重要原因。
好了,废话不多说了,先上Github和几张效果图(PS:由于录制的Gif图失帧较多,老铁们可以直接下载Demo运行查看,整个Demo大小不足1M,怪我🙃 ):
二、能做什么
- 动画样式分为显示时和移除时两种类型,两两组合可以配置出72种(8*9)不同的弹框动画效果。
- 动画样式可扩展,代码简洁易读,自行添加想要的显示样式和移除样式即可。
- 自定义控件支持手写和xib。
- 支持横竖屏和横竖屏切换监听。
- 支持自定义背景透明度。
- 支持设置显示时和移除时的动画时长。
三、安装
方式一:使用CocoaPods
pod 'ZJAnimationPopView'
方式二:手动导入
- 将
ZJAnimationPopView
文件夹中的所有源代码拽入项目中 - 导入主头文件:
#import "ZJAnimationPopView.h"
ZJAnimationPopView.h
ZJAnimationPopView.m
四、示例
方式一:直接使用
// 1.初始化
ZJAnimationPopView *popView = [[ZJAnimationPopView alloc] initWithCustomView:[[UIView alloc] initWithFrame:CGRectMake(0, 0, 300, 300)] popStyle:ZJAnimationPopStyleScale dismissStyle:ZJAnimationDismissStyleScale];
// 2.显示弹框
[popView pop];
方式二:自定义想要的弹框效果
// 1.Get custom view【获取自定义控件】
UIView *customView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 300, 300)];
UIImageView *imageView = [[UIImageView alloc] initWithFrame:customView.bounds];
imageView.image = [UIImage imageNamed:@"personal_info_02"];
[customView addSubview:imageView];
// 2.Init【初始化】
ZJAnimationPopView *popView = [[ZJAnimationPopView alloc] initWithCustomView:customView popStyle:ZJAnimationPopStyleScale dismissStyle:ZJAnimationDismissStyleScale];
// 3.Set properties,can not be set【设置属性,可不设置使用默认值,见注解】
// 3.1 显示时点击背景是否移除弹框
popView.isClickBGDismiss = ![_customView isKindOfClass:[SlideSelectCardView class]];
// 3.2 显示时背景的透明度
popView.popBGAlpha = 0.5f;
// 3.3 显示时是否监听屏幕旋转
popView.isObserverOrientationChange = YES;
// 3.4 显示时动画时长
popView.popAnimationDuration = 0.8f;
// 3.5 移除时动画时长
popView.dismissAnimationDuration = 0.8f;
// 3.6 显示完成回调
popView.popComplete = ^{
NSLog(@"显示完成");
};
// 3.7 移除完成回调
popView.dismissComplete = ^{
NSLog(@"移除完成");
};
// 4.pop view【显示弹框】
[popView pop];
五、结语
作为一名程序员,都喜欢Coding,所以不管公司交了多少任务,我们即使加班加点也是快乐的,我能说这病还有治嘛,这个库就是为了避免让大家一直重复造轮子,稍微一点点减轻老铁们的工作量,也为了能早点玩两把农药😂。
PS:
- 如果在使用过程中遇到BUG,请Issues我,谢谢。
- 这个库支持扩展动画样式,如果你想为ZJAnimationPopView输出代码,请拼命Pull Requests我,让更多的老铁们都能使用到你那吊炸天的动画效果。
- 联系我😯 :简书 微博