iOS: динамическое обновление экрана запуска

Я разработал экран запуска с помощью раскадровки. Предполагается, что у него будет 3 изображения. 2 из них являются статическими, а мне нужно обновить один во время выполнения (после загрузки с сервера).

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

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

Любое решение? Могу ли я обновить xcassets во время выполнения? Или я могу обновить изображение с помощью keypath?

Обновление: только что обнаружил, что экран запуска и экран-заставка - это две разные вещи (Ссылка). Динамическое добавление содержимого на экран запуска невозможно. В то время как использование заставки (без необходимости) не рекомендуется.


person Fayza Nawaz    schedule 27.01.2017    source источник
comment
Я могу дать вам один совет, как будто вы хотите отобразить одно изображение, загруженное из Интернета, перед домашней страницей. Таким образом, вы можете установить заставку непосредственно перед домашним экраном, так что это единственный вид экрана запуска, который вы создаете.   -  person Jitendra Modi    schedule 27.01.2017
comment
Просто проверьте этот ответ. Он поможет вам stackoverflow.com/questions / 30027960 /   -  person Jitendra Modi    schedule 27.01.2017
comment
У вас может быть код на экране запуска, поэтому просто сохраните изображение сервера в папке docs, а затем на экране запуска проверьте, существует ли он, если да, вставьте его, я думаю, это должно сработать?   -  person Sean Lintern    schedule 27.01.2017
comment
@ SeanLintern88, у вас не может быть кода на экране запуска!   -  person rckoenes    schedule 27.01.2017
comment
Это странно, потому что я использую файл экрана запуска в настройках проекта в качестве раскадровки, в которой есть 1 виртуальный канал, связанный с файлом, который выполняет и анимацию, затем переходит на другой экран, и все работает   -  person Sean Lintern    schedule 27.01.2017
comment
@ SeanLintern88 просто ярлык и обновите его значение в viewController, вы увидите, что ничего не происходит.   -  person rckoenes    schedule 27.01.2017
comment
@ SeanLintern88, я не могу этого сделать.   -  person Fayza Nawaz    schedule 27.01.2017
comment
Я показываю анимацию, которую вижу каждый раз: /   -  person Sean Lintern    schedule 27.01.2017
comment
не могли бы вы объяснить в разделе ответов, как вы создали экран запуска и добавили код? Поскольку, насколько мне известно, мы не можем .. Если это возможно, то все решится! @ SeanLintern88   -  person Fayza Nawaz    schedule 27.01.2017
comment
Дело в том, что в унаследованном проекте, который очень запутан, могут происходить другие вещи, которые не очевидны с первого взгляда.   -  person Sean Lintern    schedule 27.01.2017
comment
Я бы посоветовал просто сделать фиктивный экран, как упоминалось ранее.   -  person Sean Lintern    schedule 27.01.2017
comment
@ SeanLintern88, спасибо :)   -  person Fayza Nawaz    schedule 27.01.2017


Ответы (1)


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

Также вы (редактируете) не можете запускать какой-либо код при запуске, так как ваше приложение не запущено.

person rckoenes    schedule 27.01.2017
comment
А как насчет моего комментария выше? Решит это как-то или нет? Я знаю, что это невозможно, но это возможно - person Jitendra Modi; 27.01.2017
comment
Да, вы можете загрузить второй экран после экрана запуска, это возможно. Но вы не хотите откладывать запуск вашего приложения. - person rckoenes; 27.01.2017
comment
хм, а также я думаю, что загрузка изображения задержится, а затем отобразится определенное время. Так что лучше этого не делать. Спасибо - person Jitendra Modi; 27.01.2017
comment
@rckoenes, мы не можем использовать время выполнения? как keypath и т. д.? или мы не можем обновлять xc-assets программно ?? - person Fayza Nawaz; 27.01.2017
comment
@FayzaNawaz нет, поскольку экран запуска используется, если ваше приложение загружается, поэтому код не запущен, а ресурсы, используемые экраном запуска, снова находятся в основном пакете, который доступен только для чтения. - person rckoenes; 27.01.2017
comment
Один быстрый вопрос. Как Facebook этого добивается? Когда пользователь не вошел в систему, экран запуска (НЕ заставка) полностью синий. Но когда пользователь входит в систему, экран запуска становится белым с синей панелью вкладок вверху. Да, я говорю о стартовом экране, а не о заставке. Я знаю разницу - person Saheb Roy; 27.06.2018
comment
Немного поздно, но для меня он показывает экран запуска в обеих учетных записях с белым фоном и панелью вкладок. - person rckoenes; 09.11.2018
comment
Это противоречит рекомендациям Apple, согласно которым экран запуска должен имитировать первый экран приложения. Первый экран большинства приложений зависит от того, входил ли пользователь ранее в систему или нет, поэтому вы не будете знать, какой экран имитировать developer.apple.com/design/human-interface-guidelines/ios/. - person aryaxt; 20.07.2020