Показывать заставку только один раз IOS

Я понимаю, что играть со стандартными значками запуска и экранами-заставками - это нарушение HIG, но у меня есть такое требование, что мне нужно отображать экран-заставку только в первый раз. Возможно ли это реализовать? Я могу придумать одно простое решение: отображение в виде изображения поверх UIwindow, а затем удаление его на основе таймера. Ищу другие варианты.


person Kiran Kulkarni    schedule 27.12.2012    source источник
comment
вы не можете перестать показывать изображение по умолчанию при каждом запуске   -  person P.J    schedule 27.12.2012
comment
Что сказал Пратек, вы можете, однако, решить использовать довольно простое (полностью черное) изображение по умолчанию, а затем показать заставку, в зависимости от потребностей (как правильно заявляет MechIntel).   -  person Till    schedule 27.12.2012


Ответы (4)


Мой совет - переработать иерархию представлений так, чтобы первое представление имитировало заставку, которую вы хотите показать (контроллер представления со встроенным uiimage должен нормально работать для того, что вы описали). Затем нажмите «главный экран» поверх этого представления после определенного периода времени. Небольшой код, чтобы убедиться, что это происходит только при первом запуске с некоторым постоянным хранилищем, и все готово.

Не советую работать с UIWindow напрямую. Это может привести к всевозможным головным болям.

person Matt C.    schedule 27.12.2012
comment
Вот как это сделать. Также рекомендуется не использовать прямое использование UIWindow +1 (ключевые слова, например, ориентация интерфейса). - person Till; 27.12.2012
comment
Да, это стандартный способ сделать это. Просто ради любопытства, могу ли я взять ссылку на изображение запуска, которое было добавлено на вкладке «Сводка» в коде, и отключить его на основе логической переменной? - person Kiran Kulkarni; 28.12.2012

Это слишком просто.

Но вам не нужно манипулировать изображением запуска, а изображением, загруженным вашим приложением. Для предотвращения запуска во второй раз можно установить флаг во внутренней памяти.

Обязательно используйте технику ленивой загрузки/инициализации и отображайте изображение как можно быстрее, чем инициализация.

Я надеюсь, что это помогает!

person Community    schedule 27.12.2012
comment
Это звучит как бинго BS. - person Till; 27.12.2012

Если вы используете iOS6, вы можете использовать функцию восстановления. При первом запуске ваше приложение покажет изображение запуска. Во всех других запусках будет отображаться скриншот последнего состояния.

person Shmidt    schedule 27.12.2012
comment
Во всех остальных случаях вы имеете в виду быстрое переключение приложений —> так что это не то же самое, что спрашивал пользователь. - person Till; 27.12.2012
comment
Согласитесь, это не то же самое, а альтернатива, способная решить проблему пользователя. - person Shmidt; 27.12.2012

Итак, вы знаете, что это нарушение HIG, но ищете обходной путь. У вас должно быть изображение запуска при загрузке приложения и отображении при первом запуске. Я предполагаю, что вы не заботитесь о обзоре приложения в магазине приложений.

Давай подумаем

Образ запуска должен быть в основном комплекте. И основной пакет предназначен только для чтения вашего кода. У меня есть обходной путь, но он может работать только при втором запуске, чтобы показать изображение запуска, а затем снова нет.

  1. Добавьте свое изображение запуска с любым именем

  2. Добавьте символическую ссылку в пакет приложений с именем Default.png, которая показывает файл на шаге 3.

  3. Скопируйте это изображение запуска в папку каталога вашего приложения (ваша символическая ссылка в пакете приложений показывает файл) при первом запуске.

  4. Запустите приложение второй раз и увидите изображение запуска

  5. Удалите скопированное изображение.

Когда ваше приложение не может найти файл png, который отображается по вашей символической ссылке, оно не может отображать изображение запуска.

PS: Лично я не пробовал, но может сработать.

person Mert    schedule 27.12.2012
comment
Вы не можете ничего изменить в пакете приложений. - person Till; 27.12.2012
comment
Да, именно поэтому вы работаете с символической ссылкой. Вы ставите его один раз из xcode и работаете с файлом в каталоге приложения. Поскольку каталог приложения будет создан динамически, символическая ссылка должна быть относительной. - person Mert; 27.12.2012