Hero - 为iOS快速添加转场动画(Swift)
2019-10-29 本文已影响0人
麻辣柠檬
安利一个有趣的动画框架
Hero是一个能快速添加转场动画的第三方框架,在Github上有17.5K的星。(中文说明)
安装方法
pod 'Hero'
- 它可以实现的效果请进入Github上查看,下面实现说明中的两个简单实例
简单实例一
![](https://img.haomeiwen.com/i11157535/b857391fc4cd01eb.gif)
- 先创建好两个控制器,确定最终要显示的界面
黑色View,取名blackView1
红色View,取名redView1
红色View,取名redView2
黑色View,取名blackView2
白色View,取名whiteView2
- 动画最底层的View(例如控制器二中红色View),不能是控制器自带的View,否则会出现动画短暂黑屏的BUG
//id可以为任意名,但必须要与第二个控制器中相同View的id名相同才能实现动画 redView1.hero.id = "redView" blackView1.hero.id = "blackView"
self.hero.isEnabled = true //开启转场动画,建议在present或push前调用 //因为控制器一与控制器二相同View的id名相同,所以在转场时会自动调用动画 redView2.hero.id = "redView" blackView2.hero.id = "blackView" //设置白色View的动画,y = 500 指的是从y = 500的地方移动到白色View的最终位置 //.useGlobalCoordinateSpace,使白色View作为独立的View,不会因为父View的位置大小改变而改变 whiteView2.hero.modifiers = [.translate(y:500),.useGlobalCoordinateSpace]
这样就完成了实例一,是不是非常简单。通过很少的代码就可以实现效果不错的转场动画。👏👏👏👏👏
简单实例二
![](https://img.haomeiwen.com/i11157535/a5b73d9c39552af9.gif)
- 同样要先写好两个控制器的界面
灰色圆形View,取名为greyView1
灰色条状View,取名为greyView2
红色的CollectionView,取名为collectionView2
greyView1.hero.id = "greyView"
greyView2.hero.id = "greyView" ////层叠应用增加子视图的延迟修饰符(添加子视图动画时会有延迟加载) collectionView2.hero.modifiers = [.cascade]
func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell { let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "cell", for: indexPath) cell.layer.cornerRadius = 10 cell.backgroundColor = .red /*-------------主要--------------*/ cell.hero.modifiers = [.fade,.scale(0.5)] //在添加cell时为其添加动画[.fade(淡入淡出的效果),.scale(0.5)放大倍数为0.5] /*------------------------------*/ return cell }
这样就完成了啦。(虽然还有点小BUG,在滑动之后隐藏会有重影效果)
HeroDemo跟教程写的简单动画的Demo,有其他问题还希望大家可以指出,谢谢