Сохранение и восстановление изображения в представлении *без* использования навигационного контроллера?

Я пишу приложение OpenGL, которое рисует следы/штрихи, не очищая буфер кадра от кадра к кадру (оно просто позволяет всему накапливаться поверх себя, чего я и хочу).

В приложении есть экран настроек. Вы получаете к нему доступ, нажав кнопку. После того, как вы закончите с настройками, он вернется к графике.

Вот проблема: не могу понять, как перейти из настроек обратно в графику, не теряя то, что было в буфере кадра. Приложение представляет собой своего рода игрушку для рисования. Вы хотели бы иметь возможность рисовать, заходить в настройки, а затем возвращаться к тому, что вы делали, без очистки экрана и удаления вашей работы!

Если бы я использовал NavigationController, обо всем этом позаботились бы (я пробовал — работает отлично!)

Проблема в том, что мне не нужна уродливая громоздкая панель навигации в верхней части экрана. Но вам нужно взять навигационную панель, если вам нужен навигационный контроллер.

Любые идеи?


person Anna Dickinson    schedule 25.07.2012    source источник


Ответы (2)


Ваше решение простое. Скрыть панель навигации.

navController.navigationBar.hidden = YES;

Глянь сюда:

UINavigationController без панели навигации?

person Brian    schedule 25.07.2012
comment
Если вы скроете панель навигации, вы также скроете кнопку на ней; вы не можете выполнить переход без использования панели навигации. Если бы был способ использовать собственное изображение для панели и кнопки, это сработало бы. Я мог бы просто сделать панель невидимой и использовать собственную кнопку. Но я не думаю, что вы можете настроить панель навигации. - person Anna Dickinson; 26.07.2012
comment
Да, вы можете настроить его. developer.apple.com/library/ios /#документация/uikit/ссылка/ - person Brian; 26.07.2012
comment
Нет, вы не можете настроить его так, как я описал. Вы можете изменить цвет и прозрачность, а что нет, но вы не можете сделать его невидимым. Позвольте мне объяснить это еще раз: один из способов решения проблемы, о которой я упоминал (надеюсь, есть и другие способы), — это использовать навигационный контроллер. Но контроллер навигации требует использования панели навигации для перемещения между представлениями. Но я не хочу видеть панель навигации. Невозможно использовать, скажем, пользовательские значки кнопок и пользовательское фоновое изображение, чтобы они отображались так, чтобы они соответствовали моему приложению. Так что, наверное, не получится. - person Anna Dickinson; 26.07.2012
comment
Если бы это был я, я бы скрыл панель навигации, поместил вашу пользовательскую кнопку поверх представления и заставил бы кнопку вызывать ваш навигационный контроллер вручную. Я думаю, вы могли бы пойти по сложному пути и скопировать пиксели в память, использовать метод ручной навигации, а затем повторно скопировать их на экран, как только пользователь вернется из представления настроек. - person Brian; 26.07.2012
comment
Да, я пробовал сложный маршрут, но не смог заставить его работать. Рисование EAGLayer в контексте растрового изображения, похоже, не поддерживается. Я попробую вашу другую идею. - person Anna Dickinson; 26.07.2012

Прежде чем уйти в настройки, сохраните содержимое фреймбуфера с помощью glReadPixels. Когда вы вернетесь, загрузите эти данные в текстуру и нарисуйте их на экране.

person ryanm    schedule 26.07.2012