DJKFlipper 0.1.9

DJKFlipper 0.1.9

测试已测试
Lang语言 SwiftSwift
许可证 MIT
Released最后发布2017年8月
SwiftSwift 版本3.1
SPM支持 SPM

Dan Koza维护。



  • Dan Koza

使用Swift构建的类似Flipboard的动画。

Flipboard playing multiple GIFs

用法

import DJKFlipper
  • 在viewController中符合DJKFlipperDatasource协议

数据源方法

func numberOfPages(flipper:DJKFlipperView) -> NSInteger
  • 给DJKFlipper提供一个你想翻页的页数
func viewForPage(page:NSInteger, flipper:DJKFlipperView) -> UIView
  • 每次翻页时,你需要传递你想要显示的viewController的视图。
func viewForPage(page: NSInteger, flipper: DJKFlipperView) -> UIView {
    return yourViewControllerArray[page].view
}

工作原理

http://stackoverflow.com/a/26266025

我尝试使用CALayers和Core Animation解决这个问题。我有两个主要的图层来完成这个动画,一个静态图层和一个动画图层。

静态图层是整个视图的大小。这个图层不动画,它只持有两张图片,左右两侧(左右两侧的图片是你想要翻页的页面的截图)。动画图层是整个视图大小的一半,这个图层动画执行翻页动画。动画图层的正面和背面也是当前页面和下一页的截图。

例如,假设我们想翻到下一页。

静态图层的左侧将包含当前页面左侧的截图。右侧将包含下一页右侧的截图。动画图层将位于静态视图上方,其正面将包含当前页面右侧的截图。动画图层的背面将包含下一页左侧的截图。

当你用手指滑动时,你将在动画图层的y轴上进行CATransform3DRotate变换。因此,当你的手指从屏幕的右侧移动到左侧时,动画图层将翻转,并显示出静态视图的右侧和自身的背面。

以下是实现层(动画图层CALayer)翻页动画的基本代码。

var t = CATransform3DIdentity
t.m34 = 1.0/850 //Adds depth to the animation
t = CATransform3DRotate(t, newRadianAngleValue, 0, 1, 0)

CATransaction.begin()
CATransaction.setAnimationDuration(0)
yourAnimationCALayer.transform = t
CATransaction.commit()

待办事项

  • 添加一些错误处理:
  • 添加从左右切换到上下翻转的能力
  • 添加单元测试
  • 添加文档: