gpt4 book ai didi

iphone - OpenGL ES 中的自定义 View 过渡

转载 作者:行者123 更新时间:2023-12-03 18:33:02 24 4
gpt4 key购买 nike

我正在尝试创建一个自定义过渡,以替代您在此处获得的默认过渡,例如:

[self.navigationController pushViewController:someController animated:YES];

我准备了一个基于 OpenGL 的 View ,它对映射到平面的某些静态纹理执行效果(假设它是核心动画中翻转效果的副本)。我不知道该怎么做是:

  • 获取当前 View 内容并从中制作纹理(我记得看到过一个可以执行此操作的函数,但找不到它)
  • 如何对当前位于屏幕外且将替换当前 View 的 View 执行相同操作
  • 是否有一些我可以 Hook 的 API,以便使我的过渡类尽可能原生(使其成为一种核心动画效果)?

非常感谢任何想法或链接!

更新

Jeffrey Forbes 的答案非常适合作为捕获 View 内容的解决方案。

我还没有弄清楚如何捕获我想要转换到的 View 的内容,在转换完成之前它应该是不可见的。

另外,我应该使用哪种方法来呈现 OpenGL View ?为了演示目的,我使用了pushViewController。不过,这会影响导航栏,我实际上想用动画返回一项,请查看此视频以获取解释:

http://vimeo.com/4649397 .

另一个选择是使用presentViewController,但这会显示全屏。您认为创建另一个窗口(或 View ?)可能有用吗?

最佳答案

虽然如果我自己不做更多研究,我无法完全回答你的问题,但我可以提供一些帮助:

-为了获取 UINavigationController 的 View ,您需要截图。最简单的方法是将其抓取到 UIImage 中:

UIGraphicsBeginImageContext(self.view.frame.size);
[[self.view layer] renderInContext:UIGraphicsGetCurrentContext()];
UIImage* test = UIGraphicsGetImageFromCurrentImageContext();
UIImageView* view = [[UIImageView alloc] initWithImage:test];
UIGraphicsEndImageContext();

我不确定是否可以将 GLContext(在手机上不熟悉)渲染到 CGImage 中,但我会做类似的事情(并从中初始化 UIImage)。我会预渲染您尝试执行的动画的每一帧,并使用其中提供的动画内容将其放入 UIImageView 中。也就是说,如果您的动画足够简单。否则,可能需要编写自己的动画函数:-/

关于iphone - OpenGL ES 中的自定义 View 过渡,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/309880/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com