美文网首页iOS进阶键盘上的鼓手iOS开发常用
一行代码实现自定义转场动画--iOS自定义转场动画集

一行代码实现自定义转场动画--iOS自定义转场动画集

作者: alanwangmodify | 来源:发表于2016-06-22 17:47 被阅读4972次

前言

这段时间写了一个自定义转场动画集,只需要一行代码就可以实现各种各样的自定义转场动画。这是源码地址
WXSTransition
大家可以去下载来看看,喜欢的话麻烦给个Star。

介绍

transition animation asset
一个界面转场动画集。

在平时开发中,有时候需要一些转场动画给界面调整增添一些活力,而实现这些动画相对比较繁琐。
为了让实现转场更简单,我写了这个界面转场动画集。
调整界面时,只要一行代码就可以实现这里面的动画。
包括系统提供的动画在内,目前有大概50种动画。

使用方法

1、首先导入头文件

#import "UINavigationController+WXSTransition.h"

2、一行代码就可以调用

Push:

 [self.navigationController wxs_pushViewController:(UIViewController *) animationType:(WXSTransitionAnimationType)];

Present:

[self wxs_presentViewController:(UIViewController *) animationType:(WXSTransitionAnimationType) completion:^{

}];

说明:
WXSTransitionAnimationType是转场动画类型,通过这个枚举选择你想要的转场动画。

3、支持属性修改
[self wxs_presentViewController:<#(UIViewController *)#> makeTransition:^(WXSTransitionManager *transition) {
transition.animationType =  WXSTransitionAnimationTypePointSpreadPresent;
transition.animationTime = 1;
}];

可以通过transition设置动画时间、类型等属性,目前可修改属性不多,以后版本会增加

4、特殊调用

像point Spread 、ViewMoveToNextVC这样的动画,需要个起始view,只要将目标控制器的startView指向这个view就可以了,代码如下;


view_move_next.gif
DetailViewController *vc = [[DetailViewController alloc] init];
CollectionViewCell *cell = (CollectionViewCell *)[collectionView cellForItemAtIndexPath:indexPath];
vc.startView = cell.imgView;
[self.navigationController wxs_pushViewController:vc makeTransition:^(WXSTransitionManager *transition) {
transition.animationType = WXSTransitionAnimationTypeViewMoveToNextVC;
transition.animationTime = 1;
}];

动画效果图

自定义动画
boom.gif
brick_close_H.gif
brick_open_V.gif
cover.gif
point_spread.gif
spread_from_right.gif
spread_from_top.gif
view_move_next.gif
系统动画

iOS自身其实有许多不错的转场动画,在这个转场动画集里也进行了封装,使用方法跟自定义转场动画一样。
Push:

[self.navigationController wxs_pushViewController:<#(UIViewController *)#> animationType:<#(WXSTransitionAnimationType)#>];

Present:

[self wxs_presentViewController:<#(UIViewController *)#> animationType:<#(WXSTransitionAnimationType)#> completion:<#^(void)completion#>]
sys_oglFlip.gif sys_pageCurl.gif

后语

现在是第一个版本,原本准备支持交互手势,但是一些动画使用了交互手势存在许多问题,所以这个版本去除了,准备在以后的版本中增加一些一下功能:
1、添加一些酷炫的转场动画
2、支持交互手势
3、提供自定义动画接口,让使用者想实现自己的转场动画时,不用实现各种代理等繁琐工作,专注于fromVC,和toVC的动画逻辑。

最后再提供一下gittub 链接。
WXSTransition
欢迎大家来下载使用,记得给个star。如果有什么想法,可以进行交流,让我们一起进步。

相关文章

网友评论

  • bb07be87d81a:Block回调不走是怎么回事啊,写在了首页tabbar分类的视频页面,wxs_callBackTransition不能回调
  • 623f54313191:A控制器push到B控制器,用的您您的三方库的push 方法实现动画 。B控制器present 一个C控制器,动画会受到干扰。而且B控制器Push到D控制器的动画也不是原生动画了。请问怎样只在Apush到B时使用动画,在Bpush和present到其他控制器时保持原生动画
  • d0afe70ea42f:push出一个界面的时候 整体self.view网上移动了整个导航栏64的高度,这个怎么解决哦,还有 我在用了这个框架push出来的界面后,下一个界面用的系统的push 在两次pop动画中有黑色的背景。。。
  • 点亮橘子树:想使用某一种效果 能不能不全部导入
  • c2fffd2b0090:你这个库 是会在iOS 11 和 iOS 10 上引起,卡顿的。原因不得而知。
  • 小明2021:我添加到我的项目运行,总是报错:-[UINavigationController wxs_pushViewController:animationType:]: unrecognized selector sent to instance 0x12e868600
  • 嚼华先森:很给力
  • baymax_lee:最近遇到个问题:在A->B,B->C,C->D之后依次返回到B,使用手势然后取消会发现整个页面被清空了,变黑了,但是navigationBar的返回还是能用。
    baymax_lee:@alanwangmodify 我是在你那个secondViewController里面把btn的方法改为push 到一个新的secondVC,然后多点几次下一页,返回的时候每次的动画还不一样。到列表前一个页面的时候就会出现上下滑动一下之后页面内容被清空,黑了,导航栏返回还是可以直接回到列表页面,我看了一下WXSPercentDrivenInteractiveTransition这个对象一直没有变化。到变黑那个页面时候WXSPercentDrivenInteractiveTransition的VC为null。
    alanwangmodify:@baymax_lee 是每个动画都会这样吗,还是只有某个动画出现这种情况
  • 有梦想de咸鱼:A push到 B可以侧滑返回,B push 到C也可以侧滑返回,但是C返回到B后,再侧滑返回到A好像返回不了,跟了一下代码,好像C返回到B时NavigationViewController还是有的,但是B返回到ANavigationViewController内存指针是没了的
  • 春泥Fu:6得不行啊哥!
  • luzsyn:麻烦问一下,界面是masonry自动布局得,用这个动画整个界面向上移动了
  • luzsyn:赞
  • small_snail:太棒了:eyes:
  • 丶雨凡::stuck_out_tongue_winking_eye:赞一个
  • mf168:想问下: A 正常push B ,B 正常push C , C 转场popTo A 可以实现吗 ?
    alanwangmodify:@QQDAOCOM 是可以的, C pop到A的动画是B pushC所对应的返回动画,具体效果你可以写一个Demo试一下
  • NSMutableHeart:加油
    alanwangmodify:@NSMutableHeart 谢谢,哈哈哈
  • 郑明明:这些效果很多啊
  • 郑明明:厉害啊
  • 不会游泳的飞鱼:您好,有没有类似qq电话水波纹效果的?
  • 聂飞缘:哈哈谢谢楼主,刚好项目需要这些动画,已经去github加星了 :smile:
  • 0x00chen:对上架应用有影响吗?涉及到私有API了吗?
    alanwangmodify:@slowHand 不会有影响的,systerm里的转场动画用到的都是安全的API,其他都是自定义的
  • 0x00chen:强!
  • Knives:只要导入进去,就算没有用这个库里面的动画,用系统自带的。每次如果有tabbarController,navigationCont的话,就会出现先调用一次WXSGestureTypePanRight这个,然后返回以后,再点的话,才是系统自带的转场动画
    6b80abe14784:我也发现类似这个问题,A页面用push动画到B页面,B页面PUSH到C页面,也会有这样的动画
    Knives:@Alan1_iOS :smile: 之前hotmail有问题,我拿qq邮箱之后给你发了一下~请问这个bug怎么回事儿啊~我找了好久也不知道怎么回事儿~ :sob:
    alanwangmodify:@Knives 可以麻烦你发代码给我看一下吗?我没能理解什么意思。我的邮箱是alanwangmodify@126.com
  • 小杂鱼:你好 用present 跳转xib时候 会出现xib的界面 不会自动适配了
    SAW_:你好,请问这个问题有解决方案吗?带XIB的控制器,转场过去,界面大小默认是600*600!
    小杂鱼:@Alan1_iOS 我发你邮箱 你看下
    alanwangmodify:@小杂鱼 其实现在本身没有兼容xib,但是我自己测了一下,没发现问题,可以麻烦你把代码或者xib发我邮箱吗? alanwangmodify@126.com
  • djyuning:不错,真心不错:+1:
    alanwangmodify:@djyuning 谢谢,哈哈
  • 4f5353b6f64e:小树啊,越来越强了!
  • JinkeyAI:有没有Swift版本
    JinkeyAI:@Alan1_iOS 期待,有 bug 我就提 issue :smile:
    alanwangmodify:@Jinkey屌丝王子 有准备开始写swift版的,但我平时实际项目里没有用到swift,没有机会实践在实际工程中是否会出现很多Bug,所以估计要等一段时间。
  • 梦北_向南:感谢作者分享!
    alanwangmodify:@赖世昌 谢谢支持 :+1:
  • mysteryemm:文章很不错,Gif图用什么软件做的?
    alanwangmodify:@心董儿 要先录屏之后用视频制作。
    mysteryemm:@Alan1_iOS ok
    alanwangmodify:@心董儿 用的是GIFBrewery,Mac 版的。

本文标题:一行代码实现自定义转场动画--iOS自定义转场动画集

本文链接:https://www.haomeiwen.com/subject/pxrndttx.html