YUGLTransition 0.4.0

YUGLTransition 0.4.0

测试已测试
Lang语言 Obj-CObjective C
许可证 MIT
发布最后发布2014年12月

YuAo 维护。



  • By
  • YuAo

基于 OpenGL 的 iOS 转换。基于 GPUImage

概述

YUGLTransition 是一个库,允许您创建基于 GPU 的 UIView 和 UIViewController 转换。

渲染部分使用 GPUImage

有一些现成的转换效果,如涟漪、交换、门、闪光、飞眼等。它还允许您通过提供自定义转换过滤器来创建自己的自定义转换。

转换

预设

目前有六个预设转换过滤器:YUGLCrossDissolveTransitionFilter YUGLFlashTransitionFilter YUGLFlyeyeTransitionFilter YUGLRippleTransitionFilter YUGLSwapTransitionFilter YUGLDoorwayTransitionFilter

大多数预设过滤器都是从 glsl-transtion(一个使用 WebGL Shaders 执行转换的 JavaScript 库)移植的。您可以在这里查看转换的演示。

自定义

您可以通过子类化 GPUImageFilter、提供您的转换着色器并确认符合 YUGLTransitionFilter 协议来创建自己的转换过滤器。该协议只有一个属性:progress。所有预设过滤器都是很好的示例。

欢迎为新的转换过滤器提交拉取请求。

性能

性能因设备和所选过滤器(您编写的自定义着色器)而异。

例如,iPhone 4 能够使用闪光转换过滤器执行全屏转换,但是它很难使用交换过滤器进行转换。

一般来说,iPhone 4s 能够处理该项目中目前的所有转换过滤器。

注意:与模拟器相比,实际设备上的转换性能通常会提高。

用法

YUGLViewTransition

使用 YUGLViewTransition 创建视图转换。

[YUGLViewTransition transitionWithView:self.imageView
                              duration:1.0
                      transitionFilter:[[YUGLFlashTransitionFilter alloc] init]
                        timingFunction:nil
                              reversed:NO
                            animations:^{
                                self.imageView.image = nextImage;
                            } completion:^(BOOL finished) {
                                NSLog(@"transition completed.");
                            }];

view:转换发生的 UIView 对象。

duration:转换持续时间。

transitionFilter:一个用于渲染转换的 GPUImageOutput<GPUImageInput,YUGLTransitionFilter> 对象(基本上是一个 GPUImageFilter)。

timingFunction:一个控制转换动画曲线的 YUMediaTimingFunction 对象。就像 CAMediaTimingFunction

reversed:指示是否应使用过渡的逆版本。

animations:一个包含提交给view的更改的块对象。

completion:一个块对象,用于过渡结束时执行。

YUGLViewControllerTransition

使用YUGLViewControllerTransition创建视图控制器之间的过渡。

YUGLViewControllerTransition只是一个确认遵循UIViewControllerAnimatedTransitioning协议的类。您可以在视图控制器过渡过程中使用这个类。有关UIViewControllerAnimatedTransitioning的更多信息,请参阅[Apple的文档](https://developer.apple.com/library/ios/documentation/uikit/reference/UIViewControllerAnimatedTransitioning_Protocol/Reference/Reference.html)。

要求

  • 自动引用计数(ARC)
  • iOS 7.0+
  • Xcode 5.0+
  • 示例项目需要[cocoapods](https://cocoapods.org.cn/):运行`pod install`命令

贡献

如果您发现一个错误并且确切知道如何修复它,请提出一个pull请求。如果您无法自行进行更改,请在确认没有已记录的错误后,请提出一个问题。