*不*使用导航控制器在视图中保存和恢复图像?
Posted
技术标签:
【中文标题】*不*使用导航控制器在视图中保存和恢复图像?【英文标题】:Saving and restoring image in a view *without* using a nav controller? 【发布时间】:2012-07-25 19:48:50 【问题描述】:我正在编写一个 OpenGL 应用程序,它通过不逐帧清除帧缓冲区来绘制轨迹/笔划(它只是让所有内容都累积在自身之上,这正是我想要的)。
该应用有一个设置屏幕。您可以通过点击一个按钮来访问它。完成设置后,返回图形。
问题是:我不知道如何在不丢失帧缓冲区中的内容的情况下从设置转换回图形。该应用程序是一种绘画玩具。您希望能够在不清除屏幕和删除工作的情况下进行绘画、转到设置,然后返回到您正在做的事情!
如果我使用 NavigationController,所有这一切都会得到解决(我已经尝试过了——效果很好!)
问题是,我不希望屏幕顶部出现丑陋、笨重的导航栏。但是,如果您想要导航控制器,则必须使用导航栏。
有什么想法吗?
【问题讨论】:
【参考方案1】:您的解决方案很简单。隐藏导航栏。
navController.navigationBar.hidden = YES;
看这里:
UINavigationController without navigation bar?
【讨论】:
如果你隐藏了导航栏,你也隐藏了它上面的按钮;如果不使用导航栏,您将无法进行推送转场。如果有办法为栏和按钮使用自定义图像,那将起作用。我可以让栏不可见,并使用我自己的按钮。但是,我认为您不能自定义导航栏。 是的,您可以自定义它。 developer.apple.com/library/ios/#documentation/uikit/reference/… 不,您不能按照我描述的方式自定义它。你可以改变颜色和透明度等等,但你不能让它不可见。让我再解释一下:解决我提到的问题的一种方法(希望还有其他方法)是使用导航控制器。但是,导航控制器需要使用导航栏在视图之间移动。但是,我不想看到导航栏。没有办法使用自定义按钮图标和自定义背景图像来使其以适合我的应用程序的方式出现。所以,这可能行不通。 如果是我,我会隐藏导航栏,将自定义按钮放在视图顶部并让按钮手动调用导航控制器。我想你可以走硬路线并将像素复制到内存中,使用手动导航方法,然后在用户从设置视图返回后将它们重新复制到屏幕。 是的,我尝试了艰难的路线,但我无法让它发挥作用。似乎不支持将 EAGLayer 绘制到位图上下文。我会试试你的其他想法。【参考方案2】:在您离开进行设置之前,请使用 glReadPixels 保存帧缓冲区中的内容。返回时,将该数据加载到纹理中并在屏幕上绘制。
【讨论】:
以上是关于*不*使用导航控制器在视图中保存和恢复图像?的主要内容,如果未能解决你的问题,请参考以下文章
使用导航控制器将视图复制到项目 - “图像视图”的框架在运行时会有所不同