Запуск зображення не відображається в моєму додатку для 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
Juan Boero

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

Відповіді:


239

Тож це було досить болісно для чогось, що повинно бути банальним. Ось що я зробив:

Використовуйте xcassets

Я вирішив використовувати .xcassets проти .xib для запуску. Я видалив .xib. Якщо у вас вже є проект images.xcassets, то це чудово, інакше ви можете додати його з File> New> file:

AddNewASsetCatalog

Створіть набір зображень для запуску

Тепер створіть як мінімум набір запуску зображення та значок у вашому файлі .xcassets, клацнувши правою кнопкою миші в області навігатора.

Додати нову піктограму запуску зображення та програми

Оновіть значки додатків та запустіть параметри зображень

Потім я переконався, що "Значок та набір програм" у моїй цілі наведено нижче.

Дуже важливо. Переконайтеся, що параметр "Запуск файлу екрана" порожній.

Набори значків і наборів зображень

Додайте зображення

І останнє, але не менш важливе, термінологія, яка використовується Apple для вибору пристроїв, заплутує. Спочатку я думав, що оскільки я розгортаю лише для iOS8 (портрет iPhone), я можу це зробити і просто помістити в iPhone 6 та запуску зображення iPhone 6+:

Прилади

Я швидко зрозумів, що це не так, і я отримував попередження: "Для запуску зображення для iOS 7.0 і пізнішої версії iPhone Retina (4 дюйма) потрібно".

Тому мені довелося вибрати 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 зображення в .xcasse ще не доступні.

РЕДАКТИРУВАННЯ: З деякої непрозорої причини після додавання деяких локалізацій екран запуску перестав працювати, тепер він працює із зображенням із активів, надзвичайно дивно.


2
Щоб додати свою відповідь ... Нещодавно я намагався використати нестандартний шрифт у своєму файлі "Запуск екрана. Історія". Причиною я не зміг стати зрозумілим, прочитавши цю відповідь ТА та трохи більше досліджень / тестувань. Це те ж саме для зображення ... Xcode готує знімки з портретами та пейзажем екрану запуску програми та (на даний момент) зберігає тут: /Library/Caches/Snapshots/<<app_bundle>>/завершено до завантаження підтримуючих файлів, включаючи власні шрифти та каталог активів.
andrewbuilder

3
Я помітив, що більші зображення (> 512 пікселів) не з’являлися на моєму LaunchScreen при завантаженні з .xcasset, тоді як менші зображення відображатимуться. Дякуємо, що згадали про ваше рішення!
auco

Велике спасибі, я витратив майже 3 години на усунення цієї проблеми. Виявились .xcasstes були винні
Сергій Грищов

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

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

17

Моє рішення полягало в створенні всіх стартових зображень. введіть тут опис зображення

Потім я встановлюю джерело запуску зображень на актив LaunchImage і залишаю файл екранного запуску порожнім.

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


4
додавши стільки зображень збільшує розмір ipa. Розробка XIB - це рішення для цього. Наприклад, якщо у вас звичайний фон і просто логотип посередині, то рекомендується використовувати XIB. Просто встановіть колір тла і додайте до нього UIImage посередині, ось це. Але знову його вибір
Джасмет

Додавання Launch Sceen.xib, не використовуючи його, насправді зробив для мене трюк. Дякую!
Жако

Xcode 6 не дозволить мені змінити "запустити джерело зображення", але зберігає його з цим текстом, який я не в змозі змінювати: "Використовувати каталог активів" - і він поводиться більше як кнопка, і якщо я натискаю на нього, отримати можливість: Міграція запуску зображень до каталогу активів ... не знаю, куди звернутися звідси. Хтось ще натрапив на це? У каталог активів LaunchImage я вже імпортував цілу папку попередньо створених образів запуску різних розмірів. Немає повідомлень про помилки, але я не бачу свого стартового зображення чи зображення додатка, навіть після виконання вищезазначених інструкцій, відновлення, перезавантаження мого комп’ютера ...
сонячно,

12

Для мене це спрацювало, коли я видалив додаток, а потім перезапустив тренажер. Після повторного встановлення зображення запуску з’явилося як очікувалося. Це також працювало на фактичному пристрої.


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

11

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

Я достатньо довірився їм, що спершу розібрався в Інтернеті про те, чому не відображається зображення запуску, і все рішення не дало успіху, потім я спробував повернути старий образ запуску і добре працював, саме там я подумав, що я не є належним PNGфайлом.

TL; DR: Переконайтеся, що ви фактично використовуєте належний файл PNG, а не файл із перейменованим розширенням.


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

10

Видалення "Базового імені файлу інтерфейсу екрана" з файлу Info.plist І руйнування "Запуск 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. Створіть файл запуску екрану

Створіть файл запуску екрана

3. Додайте зображення до файлу «Запуск екрана»

  • Додайте об’єкт «Перегляд зображення» у файл запуску (видаліть мітки, створені автоматично). Цей вигляд зображення має стосуватися попереднього набору зображень .xcassets . Ви можете посилатися на це з Імені атрибуту . На цьому етапі ви повинні правильно бачити ваше зображення запуску на екрані зображення.
  • Додайте обмеження до цього зображення, щоб зберегти співвідношення сторін залежно від роздільної здатності екрана.

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

4. Додайте файл стартового екрана до цілі

Fianlly, у своїх цільових загальних властивостях, див. Файл запуску екрана. Цільові властивості та екран запуску

Запустіть додаток, і на екрані повинен з’явитися екран. Спробуйте також на iPhone6 ​​та iPhone6 ​​+, і ваша програма повинна відображатися правильно, не збільшуючи масштаб (файл "Запуск екрана" має на меті це зробити).


Я спробував це, але не вийшло: stackoverflow.com/questions/43168145/… Будь-яка ідея, чому? Дуже дякую.
Ваддаді Картік

Я щойно це зрозумів. Моє запуск зображення не відображався, під час запуску на пристрої (iPhone 6, 7+) або testFlight я отримую білий екран. Виправлення: Перейменовано на "Landing_screen.png", щоб просто "Landing_screen" видалити .png частину. Значок зображення в Xcode змінено на білий значок, а на панелі розгортки екрану зображення зараз відображається як знак питання. Тепер з’являється зображення «Запуск», а не білий екран.
Брайан

У мене схожа проблема. При використанні векторної графіки (pdf) зображення не відображається на екрані обіду, але якщо я використовую таку саму розкадрування як Main (яка відображається після екрану обіду), я можу побачити зображення. Отже, я гадаю, що векторну графіку не вважають за краще екраном обіду.
Аді

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

5

Після кількох годин, розчарованих на цьому, я вирішив скористатися цим способом. Він працює як для iPhone, так і для iPad (на Xcode 6.1)

  1. Файл >> Новий файл >> Інтерфейс користувача >> Екран запуску
  2. Створіть новий ключ / значення: "Основне ім'я файлу інтерфейсу екрана" / "Ім'я вашого екрана запуску" у вашомуApp-Info.plist

1 малюнок вартує більше тисячі слів. Будь ласка, подивіться нижче:

Файл >> Новий файл >> Інтерфейс користувача >> Екран запуску

Створіть новий ключ / значення "Запуск базового імені файлу інтерфейсу екрана" / "Ім'я вашого стартового екрана" у вашомуApp-Info.plist


4

Я читав про помилку в Xcode 6, яка заважає пейзажним програмам не відображати зображення запуску.

Спробуйте встановити зображення та орієнтацію в межах Images.xcassets:

Скріншот Xcode зображень.xcassets


1
що саме ви намагаєтесь розповісти за допомогою скріншота?
NikkyD

2
перевірити орієнтацію на інспектора атрибутів.
carlodurso

2

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

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

Рішення: Використовуйте новий Launchscreen.xib для ios8 + і далі. (це набагато краще)

Щоб пристрої ios7 працювали, ви просто вимикаєте джерело запуску зображень та використовуєте імена файлів зображень запуску старої школи в плісті

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" у своєму каталозі активів і просто очистив поле "Екран запуску" тощо voila! У мене з'явилися стартові зображення ...


Ви отримаєте застарілу шкалу у своєму додатку за допомогою цієї опції.
Джордж Майсурадзе

@GeorgeMays Як можна використовувати стартові зображення, не отримуючи застарілих масштабів?
Crashalot

1

Один із способів - також додати "Запуск екрана" ( LaunchScreen.xib), вставити зображення в нього, UIImageViewа потім встановити його на " Горизонтальний центр у контейнері " та " Вертикальний центр у контейнері " в "Вирівняти", якщо ви використовуєте автоматичну компонування.

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

Не забудьте помістити LaunchScreen.xibв "Запуск файлу екрана".


1

У мене була така ж проблема після того, як я почав використовувати Xcode 6.1 і змінив свої пускові зображення. У мене були всі зображення в каталозі активів. Я отримав би лише чорний екран замість очікуваного статичного зображення. Попробувавши так багато речей, я зрозумів, що проблема в тому, що в каталозі активів було включено проект "Цільове членство" у його поданні FileInspector. Позначивши його ON, магія і зображення почало з’являтися при запуску програми.


1
  • Переконайтеся, що ваші зображення мають точний розмір відповідно до рекомендацій Apple.
  • Переконайтеся, що ви виберете лише одну опцію - або запустити екранний файл, або запустити джерело зображення. Ці два варіанти можна знайти в налаштуваннях збірки проекту -> Загальні

Я пропоную вам обрати Запуск джерела зображення як зображення. Створіть об’єкти зображень із сплеском там у папці Image.assests.

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


0

Я спробував відкрити новий проект і пройшов ті ж кроки, які ви зробили, щоб встановити екран запуску.

За замовчуванням .xib було встановлено як "Запустити екранний файл", а білий екран з міткою відображався на півсекунді в тренажері.

Потім я "Запускаю джерело зображень" і встановлюю його на Images.xcassets, який генерується із фоновими зображеннями, які я додав до проекту. (все добре поки що)

Перезапустіть тренажер, а зображення запуску не відображаються ...

Після видалення вказаного "Запустити екранний файл" та очищення: Продукт -> Очистити, у верхньому меню остаточно відображаються зображення запуску.

Може, це допоможе?


Терренс - ти спробував запустити тренажер знову? Причина, яку я запитую, полягає в тому, що ця методика працює ПЕРШИЙ час, коли я виконуюсь. Але після повторного запуску тренажера я повернуся до квадратного.
Едді Хартман

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

0

До вашого проекту автоматично додається файл "LaunchScreen.xib". Видалення цього перемістить xCode на використання зображень за замовчуванням у Images.xcassets

відредаговано, щоб додати перейти до значків додатків та запуску зображень. Файл екрана запуску повинен бути порожнім / порожнім


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 / ціль розгортання 7,0 / лише орієнтація на ландшафт) *

Я знаю, це старе питання, але з Xcode 7.2 я все ще отримую повідомлення, і я вирішив це:

1) Виберіть PORTRAIT і обидва пейзажі. Додайте "Запуск джерела зображень" та "Запуск файлу екрана"

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

2) У своєму Launch Image виберіть iPhone "8.0 і пізніші" та "7.0 і пізніші".

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

3) Додайте цей код у додатокDelegate:

#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, тоді на правій панелі ви можете встановити прапорець "Чи контролер початкового перегляду".

LaunchScreen.storyboard -> Є контролер початкового перегляду


0

Я щойно це зрозумів. Моє запуск зображення не відображався, під час запуску на пристрої (iPhone 6, 7+) або testFlight я отримую білий екран. Виправлення: Перейменовано на "Landing_screen.png", щоб просто "Landing_screen" видалити .png частину. Значок зображення в Xcode змінено на білий значок, а на панелі розгортки екрану зображення зараз відображається як знак питання. Тепер з’являється зображення «Запуск», а не білий екран. Моя настройка: я використовую Swift 3.1 з Xcode 8.3.1. У LaunchScreen.storyboard я додав простий вид зображення і розтягнув зображення, щоб відповідати контролеру перегляду. Я встановлюю обмеження для автоматичного розміщення вгорі / знизу / провідні / відстані для перегляду на 0.


0

Якщо ви змінили ваше стартове зображення з попереднього зображення, дотримуйтесь наступного:

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

Це, мабуть, через кешування стартового зображення, здійснене iOS. Перезавантаження пристрою повинно вирішити проблему.


0

Я зіткнувся з цією помилкою також у своєму додатку, призначеному лише для пейзажу. Наступне рішення карлодурсо працює:

  1. поставте галочку "Пейзаж"
  2. перетягніть зображення на місце.

-2

Для мене це працює, коли я виймаю LaunchScreen.xibі змінюю його у файл раскадровки LaunchScreen.storyboard.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.