- Notifications
You must be signed in to change notification settings - Fork48
快速实现控制器的转场和View的快速popover显示,并支持自定义动画、手势退场
License
NotificationsYou must be signed in to change notification settings
LoongerTao/TLTransitions
Folders and files
Name | Name | Last commit message | Last commit date | |
---|---|---|---|---|
Repository files navigation
pod 'TLTransitions', '~> 1.5.1'
这可能是本地的CocoaPods仓库列表没有更新导致的。
运行以下命令更新本地的CocoaPods仓库列表:
pod repo update
然后通过以下命令查询
pod search TLTransitions
如果仍然查询不到最新版本,可以删除本地仓库重新安装
sudo rm -rf ~/.cocoapods/repos/master pod setup
让繁琐的个性化控制器的转场(present/pop)和视图弹窗实现,变的简单快速(一句代码或几行即可搞定),并支持动画的自定义,支持通过手势转场(dismiss/pop)
- 控制器的转场基于协议
UIViewControllerTransitioningDelegate
,UINavigationControllerDelegate
,UIViewControllerAnimatedTransitioning
- View弹窗则是通过控制器的转场包装而来,同时还基于
UIPresentationController
- 使用:对应
TLTransition
类的API,只要一行代码即可将一个已有的View进行显示,使用如下(更多使用见TLTransition.h
中的API 或 Demo))
// popView是一个用户自定义的视图,并且已经设置好布局[TLTransitionshowView:popViewpopType:TLPopTypeAlert];
- 可实现如下效果:
- 图1. 系统Alert样式的中间弹窗,并支持键简单的盘高度自适应(可关闭)
- 图2. 系统Action Sheet样式的底部弹窗
- 图3. 将一个view显示到指定的位置
- 图4. 将一个view从frame1动画到frame2
- 图5. 动画自定义,提供block将自定义动画传入即可
- 其他API
- 动态更新size(效果如上面ActionSheet样式所示,仅限size,不能改变位置)
// 实时更新view的size ,显示后也可以更新- (void)updateContentSize;// 使用CGRect rect = _bView.bounds;rect.size.height +=1;_bView.bounds = rect;[_transitionupdateContentSize];
- 手动dismiss(正常情况通过点击灰色区域进行dismiss,无需手动调用API)
/** * 隐藏popView * 如果TLTransition没有被引用,则在隐藏后会自动释放 * 如果popView没有被引用,在隐藏后也会自动释放*/- (void)dismiss;// 使用[_transitiondismiss];
- 所在类:分类
UIViewController+Transitioning
和遵守TLTLAnimatorProtocol
协议的Animator
类 - 支持多种模式的动画(具体API见上述类头文件):
- present:
系统原生转场动画
(非自定义转场)、Swipe系列
、CATransition系列动画
、Cunstom Block模式
、案例锦集
- push:
Swipe系列
、CATransition系列
、Cunstom模式
、案例锦集
- 支持自定义动画[Animator](
非Cunstom模式
)只要基于TLTLAnimatorProtocol
协议即可,具体实现可参考模版TLAnimatorTemplate
里面有一些思路与注意事项 - 所以类型API都默认支持侧滑手势dismiss/pop,可以关闭(如果要手动dismiss/pop,只需调用原生API即可)
- 部分转场效果图
- 图1. 原生present
- 图2.Swipe
- 图3.CATransition
- 图4.Cunstom
- 图5.锦集 (部分)
- 图6.锦集-圆形缩放
- 图7.锦集-抽屉效果
- 图8.轻仿App store Card动画
- 其它效果(见demo):发牌效果、轻缩放(小程序转场效果)...
- 使用步骤与举例 (更多使用见
UIViewController+Transitioning.h
中的API 或 Demo)可以一步实现,也可以分步实现a. 分步实现(建议使用,更灵活、多样化、统一化):- 创建动画管理者
- 设置动画时间
- 设置手势使能
更多API的使用见demoTLSecondViewController *vc = [[TLSecondViewControlleralloc]init];vc.disableInteractivePopGestureRecognizer =YES;// 关闭手势// 1.创建动画管理者TLCATransitonAnimator *animator;animator = [TLCATransitonAnimatoranimatorWithTransitionType:transitionTypedirection:directiontransitionTypeOfDismiss:transitionTypeOfDismissdirectionOfDismiss:dismissDirection];animator.transitionDuration =3.0;// 动画时间// 调用API转场// push(直接使用self发起API调用)[selfpushViewController:vcanimator:animator];/** present[self presentViewController:vc animator:animator completion:^{ // 完成回调 }];*/
b. 一步实现:
更多API的使用见demoTLSecondViewController *vc = [[TLSecondViewControlleralloc]init];// vc.disableInteractivePopGestureRecognizer = YES; // 关闭侧滑pop手势// push (直接使用self发起API调用)[selfpushViewController: vcswipeType: TLSwipeTypeInAndOutpushDirection: TLDirectionToRightpopDirection: TLDirectionToRight];/** present[self presentViewController:vcswipeType: TLSwipeTypeInAndOutpresentDirection:TLDirectionToRightdismissDirection:TLDirectionToRightcompletion:^ {// 完成回调}];*/
- 在push或pop时使用
- hidesBottomBarWhenPushed
隐藏bottom bar 或 tabbar时,bar与view的转场动画不协调的情况(如下图所示)- 问题由
happying
同学提出,并给出他的处理方案 - 我的处理方法:在即将开始push时手动隐藏bar,pop完成后手动显示bar,以此取代
toVC.hidesBottomBarWhenPushed = YES
。(只在特殊情况下需要处理)
- 问题由
- (void)viewDidAppear:(BOOL)animated { [superviewDidAppear:animated];if (显示条件) { self.tabBarController.tabBar.hidden =NO;// 如果是pop回来的,且需要显示bar,就手动将其显示 }}- (void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event { UIViewController *toVc = [UIViewControllernew]; toVc.view.backgroundColor = [UIColorredColor]; toVc.hidesBottomBarWhenPushed =NO;// 设置为NO self.tabBarController.tabBar.hidden =YES;// push前手动隐藏bar TLSwipeAnimator *anm = [TLSwipeAnimatoranimatorWithSwipeType:TLSwipeTypeInAndOutpushDirection:TLDirectionToToppopDirection:TLDirectionToBottom]; [selfpushViewController:toVcanimator:anm];}
About
快速实现控制器的转场和View的快速popover显示,并支持自定义动画、手势退场
Topics
Resources
License
Stars
Watchers
Forks
Packages0
No packages published