Изображение запуска не отображается в моем приложении iOS


149

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

Я добавил экран запуска двумя способами: в качестве XIB (с именем по умолчанию LaunchScreen.xib) и в качестве образа запуска, установленного в xcassets.

Я убедился, что мой «Файл экрана запуска» настроен на LaunchScreen.xib.

Я смоделировал каждое доступное устройство (например, «iPhone5 iOS8» / «iPhone5s iOS8» / «iPhone6 ​​iOS8». Обратите внимание, что в симуляторе доступна только iOS 8).


Изображения, используемые на экране запуска, не должны находиться в Images.xcassets, их следует поместить в пакет, чтобы проверить, попробуйте ли вы тестовое изображение, отсутствующее в xcassets, и установить другой цвет фона для самого .xib, чтобы увидеть если он загружает .xib
Хуан Боэро

@JuanBoero Почему в комплекте? Они используются во время сборки, а не во время выполнения.
Рудольф Адамкович

Ответы:


239

Так что это было довольно больно для чего-то, что должно быть тривиальным. Вот что я сделал:

Использовать xcassets

Я решил использовать .xcassets против .xib для запуска. Я удалил .xib. Если у вас уже есть images.xcassets в вашем проекте, тогда отлично, в противном случае вы можете добавить один из File> New> file:

AddNewASsetCatalog

Создать набор изображений запуска

Теперь создайте как минимум набор образа запуска и набор значков в файле .xcassets, щелкнув правой кнопкой мыши в области навигатора.

Добавить новое изображение запуска и значок приложения

Обновите значки приложений и запустите настройки изображений

Затем я убедился, что «значок приложения и наборы изображений» в моей цели соответствуют приведенным ниже.

Очень важно: убедитесь, что параметр «Файл экрана запуска» пуст.

Набор значков и изображений приложений

Добавьте изображения

Наконец, что не менее важно, терминология, используемая Apple для выбора устройств, сбивает с толку. Сначала я думал, что, поскольку я развертываю только для iOS8 (iPhone Portrait), я могу сделать это и просто вставить образы запуска iPhone 6 и iPhone 6+:

приборы

Я быстро понял, что это не так, и получил предупреждение: «Требуется образ запуска iPhone Retina (4 дюйма) для iOS 7.0 и более поздних версий».

Поэтому мне пришлось выбрать iPhone под iOS 7.0 и выше, а также добавить изображение для iPhone 5s.

Поэтому, чтобы выяснить, какие флажки ставить справа, не задавайте вопрос: какова моя минимальная ориентация iOS и устройства и устройства, а задайте вопрос:

Какие устройства могут поддерживать мою минимальную iOS? Теперь, какой минимальный iOS поддерживается на этих устройствах? И убедитесь, что вы отметили все эти поля. Поэтому я нацеливаюсь на iPhone 5s, 6 и 6 Plus на 8.0, но, учитывая, что iPhone 5s может существовать с 7.0, мне нужно установить флажок 7.0, чтобы показать заполнитель изображения. Другими словами, флажок (iOS) справа показывает минимальную версию iOS, доступную для этого устройства, и вам нужно щелкнуть ее, чтобы отобразить заполнитель изображения и поместить изображение, независимо от того, развертываете ли вы в этой версии iOS или нет ,

Надеюсь, это кому-нибудь поможет.

Добавление всех устройств

введите описание изображения здесь


1
без стартового экрана размер клавиатуры отличается от любой идеи, как это исправить screencast.com/t/Vk18vuhSqZv
souvickcse

2
Этот материал так раздражает.
ReduxDJ

5
Вы, сэр, выиграли Интернет.
OhadM

46
Это работало, но изменения были видны только тогда, когда приложение было удалено с устройства и переустановлено. Старый экран запуска сохранялся даже после очистки кешей и удаления производных данных.
Фрэнсис Джервис

15
Ааааа, мне нужно было удалить свое приложение с телефона, чтобы изменения вступили в силу, я просто потратил много времени: '(
Фил Хадсон,

31

Значение LaunchScreen.xibи информация Launch screen interface file base nameиз моего опыта являются заполнителями, которые создаются при создании проекта. Если вы хотите использовать Images.xcassetsисключительно для стартовых экранов, удалите LaunchScreen.xibи info.plistэлемент, и элемент.

Если вы предоставите info.plistнастройку, ваше приложение будет использовать, xibа не вашImages.xcassets


1
Хорошее простое решение.
Трэвис М.

2
Решение «arcady bob» сработало для меня: я открыл «info.plist» и удалил элемент «Базовое имя файла интерфейса экрана запуска», запустил мое приложение, и образ запуска наконец появился.
Жозе Мануэль Абарка Родригес

Это старый, но это то, что исправило это для меня.
Мартин

20

Xcode 8:

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

Похоже, что к моменту загрузки .xib изображения в .xcassets еще не доступны.

РЕДАКТИРОВАТЬ: По какой-то непрозрачной причине после добавления некоторых локализаций стартовый экран перестал работать, теперь он работает с изображением из ресурсов, очень странно.


2
Чтобы добавить в свой ответ ... Недавно я попытался использовать собственный шрифт в моем файле «Launch Screen.storyboard». Причина, по которой я не смог выяснить это после прочтения этого SO ответа и немного больше исследований / тестирования. То же самое для изображения ... XCode готовит портретные и альбомные снимки экрана запуска вашего приложения и (в настоящее время) сохраняет здесь: /Library/Caches/Snapshots/<<app_bundle>>/завершено до загрузки вспомогательных файлов, включая пользовательские шрифты и каталог ресурсов.
Andrewbuilder

3
Я заметил, что большие изображения (> 512 пикселей) не отображаются на моем LaunchScreen при загрузке из .xcasset, тогда как меньшие изображения будут отображаться. Спасибо за упоминание вашего решения!
Auco

Большое спасибо, я потратил почти 3 часа на устранение этой проблемы. Оказалось, виноваты были .xcasstes
Сергей Грищев

То же самое здесь, изменил файл изображения, который использовался в xib с 1024x1024 до разрешения менее 512px, исправил его.
Eike

1
@JuanBoero В комплекте? Они используются во время сборки, а не во время выполнения.
Рудольф Адамкович

17

Моим решением было создать все образы запуска. введите описание изображения здесь

Затем я установил Launch Images Source для актива LaunchImage и оставил файл экрана запуска пустым.

Наконец, если проект не имеет Launch Screen.xib, добавьте этот файл и оставьте его как есть. введите описание изображения здесь


4
добавив так много изображений. увеличивает размер IPA. XIB Launch является решением для этого. например, если у вас есть простой фон и просто логотип посередине, то мы рекомендуем использовать XIB. Просто установите цвет фона и добавьте UIImage в середине, вот и все. Но снова его выбор
Jasmeet

Добавление файла Launch Sceen.xib без его использования фактически помогло мне. Спасибо!
Jacco

Xcode 6 не позволяет мне изменять «источник изображения запуска», но сохраняет его с этим текстом, который мне не разрешено изменять: «Использовать каталог активов» - и он ведет себя больше как кнопка, где, если я нажимаю на него, я получите возможность: переносить образы запуска в каталог ресурсов ... не знаю, куда идти отсюда. Кто-нибудь еще сталкивался с этим? Я уже импортировал целую папку готовых стартовых образов разных размеров в каталог ресурсов LaunchImage. Нет сообщений об ошибках, но я не вижу своего образа запуска или образа приложения даже после выполнения приведенных выше инструкций, перестройки, перезагрузки компьютера ...
солнечный

12

Для меня это сработало, когда я удалил приложение, а затем перезапустил симулятор. При повторной установке образ запуска появился, как и ожидалось. Это также работало на реальном устройстве.


После удаления приложения мне также пришлось перезагрузить устройство. Кроме того, я очистил кэш Xcode, а также перезапустил Xcode.
Lenooh

11

Для людей, которые используют Asset Catalog's Launch Image, как я понял это самым сложным образом, у меня был такой сценарий, где мне сначала дали jpgфайл, затем я попросил их преобразовать его в PNG.

Я настолько доверял им, что сначала я искал в Интернете, почему образ запуска не показывал, и делал все решения безрезультатно, затем я попытался вернуть старый образ запуска и работал нормально, именно там я подумал, что я иметь не правильный PNGфайл.

TL; DR: убедитесь, что вы действительно используете правильный файл PNG, а не файл с переименованным расширением.


1
Будьте осторожны с использованием заглавных букв в расширениях файлов, в то время как устройство правильно найдет файл, симулятор может этого не делать.
Хуан Боэро

10

Удаление "Базовое имя файла интерфейса экрана запуска" из файла Info.plist И удаление "Launch Screen.xib" работало для меня.


Это решило мою проблему. Но я думаю, что Apple предполагает, что для других было бы лучше использовать файл xib, а не создавать 9 различных изображений.
TypingPanda

7

Простое удаление и переустановка приложения работало на меня:

  • Тестирование в симуляторе

    1. Удалить приложение в симуляторе.
    2. Выйдите и перезапустите симулятор.
    3. Запустите проект снова в Xcode.

  • Тестирование на устройстве

    1. Удалить приложение с устройства.
    2. Запустите проект снова в Xcode.

2
Для устройства не только удаление и переустановка не работали для меня. Перезапуск телефона (устройства) был решением в моем случае
Кутай Демиеррен

6

Проблема с принятым ответом состоит в том, что если вы не установите файл экрана запуска, ваше приложение будет в режиме масштабирования на таких устройствах, как iPhone 6 & 6+ => размытый рендеринг.

Ниже приведено то, что я сделал, чтобы на каждом устройстве было полнофункциональное решение (я ориентируюсь на iOS 7.1 и использую Xcode 8) (действительно, я сходил с ума от этой проблемы с масштабированием)

1. Подготовьте свои .xcassets

Чтобы упростить его, я использую векторный файл .PDF. Это очень удобно и избегайте создания нескольких изображений для каждого разрешения (1x, 2x, 3x ...). Я также предполагаю, что вы уже создали свои xcassets.

  • Добавьте изображение вашего стартового экрана (или векторный файл) в ваш проект
  • Перейдите на свой .xcassets и создайте новый набор изображений . В окне «Атрибуты» изображения выберите « Масштаб» -> «Один масштаб».
  • Перетащите векторный файл в набор изображений.

Создайте набор изображений для .xcassets

2. Создайте свой файл Launch Screen

Создать файл экрана запуска

3. Добавьте свое изображение в файл экрана запуска

  • Добавьте объект просмотра изображений в файл экрана запуска (удалите метки, которые были автоматически созданы). Этот вид изображения должен ссылаться на предыдущий набор изображений .xcassets . Вы можете ссылаться на него из атрибута Name . На этом этапе вы должны правильно увидеть изображение экрана запуска в представлении изображения.
  • Добавьте ограничения к этому виду изображения, чтобы сохранить соотношение сторон в зависимости от разрешения экрана.

Добавьте изображение заставки в файл Launch Screen

4. Добавьте файл экрана запуска к своей цели

В общих чертах, в ваших общих свойствах Target, обратитесь к файлу Launch Screen. Свойства цели и экран запуска

Запустите ваше приложение, и ваш экран заставки должен отображаться. Попробуйте также на iPhone6 ​​и iPhone6 ​​+, и ваше приложение должно корректно отображаться без увеличения масштаба (файл Launch Screen предназначен для этого).


Я попробовал это, но это не сработало: stackoverflow.com/questions/43168145/… Есть идеи, почему? Огромное спасибо.
Ваддади Картик

Я только что понял это. Изображение при запуске не отображается, при запуске на устройстве (iPhone 6, 7+) или testFlight появляется белый экран. Исправлено: Переименовано в «Landing_screen.png», чтобы просто «Landing_screen» удаляло часть .png. Значок изображения в XCode изменился на белый значок, и в раскадровке экрана запуска изображение теперь появляется как вопросительный знак. Теперь появляется изображение запуска, а не белый экран.
Брайан,

У меня аналогичная проблема. При использовании векторной графики (pdf) изображение не отображается на Lunch Screen, но если я использую ту же раскадровку, что и Main (которая отображается после Lunch Screen), я могу видеть изображение. Итак, я предполагаю, что векторная графика не является предпочтительной в качестве экрана для обеда.
Ади

Мне удалось заставить это работать, перезапустив симулятор. Ранее я удалил приложение и очистил проект, но заставка все еще не отображалась.
Ади

5

После нескольких часов разочарования я решил использовать этот способ. Это работает и для iPhone и для iPad (на Xcode 6.1)

  1. Файл >> Новый файл >> Интерфейс пользователя >> Экран запуска
  2. Создайте новый ключ / значение: «Базовое имя файла интерфейса экрана запуска» / «Ваше экранное имя запуска» в YourApp-Info.plist

1 картинка стоит больше тысячи слов. Пожалуйста, посмотрите на ниже:

Файл >> Новый файл >> Интерфейс пользователя >> Экран запуска

Создайте новый ключ / значение «Базовое имя файла интерфейса экрана запуска» / «Ваше экранное имя запуска» в YourApp-Info.plist


4

Я читал об ошибке в Xcode 6, которая не позволяет приложениям отображать стартовое изображение только в альбомной ориентации.

Попробуйте установить изображения и ориентацию в Images.xcassets:

Скриншот Xcode Images.xcassets


1
что именно вы пытаетесь сказать с помощью скриншота?
NikkyD

2
проверить ориентацию на атрибуте инспектора.
Карлодурсо

2

Существует ошибка, из-за которой изображения запуска Xcode 6, хранящиеся в файлах активов, приводят к тому, что приложения только для iphone landscape на iOS7 / iOS8 отображают черное изображение запуска. iPad работает нормально.

http://www.raywenderlich.com/forums/viewtopic.php?f=2&t=10868

Решение: используйте новый Launchscreen.xib для ios8 + и выше. (это намного лучше)

Чтобы устройства ios7 работали, вы просто отключаете источник изображений запуска и используете имена файлов образов запуска старой школы в plist

iphone5 - Default-568h@2x.png 
iphone4s - Default@2x.png
ipad2 - Default-Landscape~ipad.png
ipad retina - Default-Landscape@2x~ipad.png

Больно но работает. В
введите описание изображения здесь


2

Я перепробовал все, но решение было очень простым. Просто используйте файл .jpg вместо .png на LaunchScreen.storyboard. Похоже, что iOS не отображает файл .png или относительно большой размер изображения на экране запуска.


У меня был png на экране запуска - он прекрасно отображался при создании раскадровки в XCode - но выглядел черным, когда пытался запустить приложение на реальном устройстве. После того, как я немного выдернул волосы, я заменил jpg и теперь работает нормально. Спасибо!
tiritea

2

Сделайте, что Spectravideo328 ответил и:

Попробуйте ОТКЛЮЧИТЬ окно iOS 7 и более поздние версии и ПРОВЕРЬТЕ окно iOS 6 и более ранние в каталоге ресурсов. Кажется, есть ошибка с iOS 7 Launch Image. (Оба имеют одинаковые образы запуска, за исключением изображения 320x480)

Надеюсь, это поможет, это помогло мне!


1

Я установил «LaunchImage» в своем каталоге активов и просто очистил поле «Launch Screen» и вуаля! У меня появились изображения запуска ...


С этим параметром вы получите устаревший масштаб в своем приложении.
Георгий Майсурадзе

@ GeorgeMays Как вы можете использовать Launch Images, не получая устаревшие масштабы?
Crashalot

1

Один из способов - добавить «Экран запуска» ( LaunchScreen.xib), вставить изображение, UIImageViewа затем установить его в « Горизонтальный центр в контейнере » и « Вертикальный центр в контейнере » в «Выравнивание», если вы используете автоматическую компоновку.

Экран: http://i.stack.imgur.com/CfnHT.png

Не забудьте поместить LaunchScreen.xibв «Файл экрана запуска».


1

У меня была та же проблема после того, как я начал использовать Xcode 6.1 и изменил свои изображения запуска. У меня были все изображения в каталоге активов. Я бы получил только черный экран вместо ожидаемого статического изображения. Попробовав столько всего, я понял, что проблема в том, что в Каталоге активов в представлении FileInspector отмечена галочка «Целевое членство» в проекте. Отметив галочкой ON, волшебство появилось, и изображение начало появляться при запуске приложения.


1
  • Убедитесь, что ваши изображения имеют точный размер в соответствии с рекомендациями Apple.
  • Убедитесь, что вы выберете только одну опцию: файл экрана запуска или источник изображения запуска. Вы можете найти эти две опции в настройках сборки проекта -> Общие

Я предлагаю вам выбрать Launch Image Source как Image.Assets. Создайте объекты-заставки в папке Image.assts.

Эталонное изображение для правильной конфигурации: введите описание изображения здесь


0

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

По умолчанию файл .xib был установлен как «Файл запуска», и белый экран с меткой показывался в симуляторе в течение полсекунды.

Затем я запускаю «Источник изображений» и устанавливаю его на Images.xcassets, который создается с фоновыми изображениями, которые я добавил в проект. (пока все хорошо)

Запустите симулятор, и изображения запуска не отображаются ...

После удаления указанного «Файл экрана запуска» и очистки: Product -> Clean из верхнего меню, наконец, появляются изображения запуска.

Может это поможет?


Терренс - ты пробовал запустить симулятор снова? Причина, по которой я спрашиваю, заключается в том, что этот метод работает в первый раз, когда я бегу. Но после повторного запуска симулятора я вернулся к исходной точке.
Эдди Хартман

Я не пробовал второй раз, когда я прокомментировал. Теперь я вижу ту же проблему.
Терренс Гигги

0

Существует файл 'LaunchScreen.xib', автоматически добавленный в ваш проект. При удалении xCode будет использоваться изображения по умолчанию в Images.xcassets.

отредактировано, чтобы добавить, перейдите к значкам приложений и запустите изображения Файл экрана запуска должен быть пустым / emtpy


0

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

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

Для тех, кому интересно, вот как выглядел мой project.pbxproj.

...
...
...
XXXXXXXXXXXXXXXXXXXXXXXX /* Release */ = {
            isa = XCBuildConfiguration;
            buildSettings = {
                ALWAYS_SEARCH_USER_PATHS = NO;
                ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
                ASSETCATALOG_COMPILER_LAUNCHIMAGE_NAME = LaunchImage; <---THIS LINE WAS MISSING
...
...
...

0

По какой-то причине мне пришлось изменить местоположение каталога активов на «относительно проекта», чтобы это работало.

Я также удалил приложение со своего телефона и переустановил, но, вероятно, это сделал «родственник проекта».


0

* (Xcode 7.2 / Deployment Target 7.0 / Только альбомная ориентация) *

Я знаю, это старый вопрос, но с Xcode 7.2 я все еще получаю сообщение, и я исправил это:

1) Выберите ПОРТРЕТ и оба пейзажа. Добавить «Запустить источник изображений» и «Файл экрана запуска»

введите описание изображения здесь

2) В своем образе запуска выберите iPhone «8.0 и более поздние версии» и «7.0 и более поздние версии».

введите описание изображения здесь

3) Добавьте этот код в ваше приложение.

#if __IPHONE_OS_VERSION_MAX_ALLOWED < 90000
- (NSUInteger)supportedInterfaceOrientations
{
    return UIInterfaceOrientationMaskLandscape;
}
#else
- (UIInterfaceOrientationMask)application:(UIApplication *)application     supportedInterfaceOrientationsForWindow:(UIWindow *)window
{
    return (UIInterfaceOrientationMaskLandscape);
}
#endif

4) Добавьте это на свой ViewController

#if __IPHONE_OS_VERSION_MAX_ALLOWED < 90000
- (NSUInteger)supportedInterfaceOrientations
#else
- (UIInterfaceOrientationMask)supportedInterfaceOrientations
#endif
{
     return UIInterfaceOrientationMaskLandscape;
}

Я надеюсь помочь кому-то еще.


Я пробовал нечто подобное, но это не сработало: stackoverflow.com/questions/43168145/… Есть идеи, почему? Огромное спасибо.
Ваддади Картик

1
Это должно быть одним из самых раздражающих маленьких FU в разработке Xcode. Есть так мало вещей (очевидно), чтобы установить, и все же каждый проект, который я создаю, это маленькое чудовище, занимает слишком много времени. Каждый раз, когда я решаю это, это кажется случайным, и как только он работает, я МОЛЕНЬ, что я случайно не касаюсь этого файла / процесса снова. Новый проект, такой же сумасшедший, нужно выяснить, почему просто графика в середине экрана запуска. Раскадровка не отображается. Все настройки соответствуют требованиям, но, возможно, фаза луны не так?
..

0

Это работает для меня. Нажмите LaunchScreen.storyboard, затем на правой панели вы можете установить флажок «Is Initial View Controller».

LaunchScreen.storyboard -> является начальным контроллером представления


0

Я только что понял это. Изображение при запуске не отображается, при запуске на устройстве (iPhone 6, 7+) или testFlight появляется белый экран. Исправлено: Переименовано в «Landing_screen.png», чтобы просто «Landing_screen» удаляло часть .png. Значок изображения в XCode изменился на белый значок, и в раскадровке экрана запуска изображение теперь появляется как вопросительный знак. Теперь появляется изображение запуска, а не белый экран. Мои настройки: я использую Swift 3.1 с Xcode 8.3.1. В LaunchScreen.storyboard я добавил простой вид изображения и растянул изображение, чтобы оно соответствовало контроллеру вида. Я установил автоматические ограничения макета Top / Bottom / Leading / Trailing space для superview на 0.


0

Если вы изменили свой стартовый образ с предыдущего изображения, обратите внимание на следующее:

  • устройства / симуляторы, на которых приложение было установлено ранее, по-прежнему показывают предыдущее изображение и отказываются показывать новое (удаление и повторная установка приложения не помогают)
  • устройства / симуляторы, на которых приложение ранее не устанавливалось, показать новый образ запуска

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


0

Я столкнулся с этой ошибкой и в моем приложении только для ландшафта. Следующее решение Карлодурсо работает:

  1. установите флажок «Пейзаж»
  2. перетащите изображение на место.

-2

Для меня это работает, когда я удаляю LaunchScreen.xibи меняю его на файл раскадровки LaunchScreen.storyboard.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.