it-swarm.com.ru

iOS 8: экран запуска StoryBoard выглядит черным [один файл XIB работает нормально]

Поэтому я попытался создать раскадровку запуска для своего приложения iOS 8, используя это руководство

Тем не менее, я получаю только черный экран, когда я запускаю свое приложение. Один файл screen.xib запуска работает отлично, однако, когда я пытаюсь использовать раскадровку, он не работает. 

Я пробовал раскадровку только с одним контроллером представления, но он по-прежнему дает мне черный экран, поэтому я считаю, что проблема связана с файлами раскадровки в моей настройке. Есть идеи?

[Версия XCode 6.4]

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

12
Darvish Kamalia

Прочитайте учебник и протестируйте его, и он не говорит о двух вещах:

1: Вам необходимо добавить UIViewController в свой файл .storyboard, а затем выбрать его в качестве начального контроллера.

2: Если вы хотите изменить больше, чем просто экран запуска, вам придется перейти к настройкам проекта и установить для «Основного интерфейса» соответствующий .storyboard

Как только это будет сделано, все, что вам нужно сделать, это отредактировать соединения UIButton/Label/etc с вашими классами ViewController.

Правка:

Для пояснения вы можете установить UIView в качестве начального контроллера, выбрав его в соответствующем файле раскадровки, а затем открыв инспектор атрибутов. Опция «Is Initial Controller» находится ближе к середине.

18
CraftMcMatt

Для людей, использующих UIImageView на экране запуска

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

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

Это покажет изображение как недействительное (?) В редакторе, но будет отображаться правильно при запуске на устройстве.

(Не спрашивайте меня, почему это так работает. Спросите у Apple.)

 enter image description here

12
Ehtesham Hasan

Ни один из ответов не содержит всех необходимых шагов, отсюда и это исчерпывающее решение.

Раскадровка

Начните с создания LaunchScreen.storyboard . Xcode> File> New> File ...> Storyboard> LaunchScreen.storyboard и добавьте его ко всем соответствующим целям.
В этой раскадровке создайте один контроллер представления типа UIViewController. Сделайте всю магию, которую требует ваш экран запуска, затем выполните следующие действия:

  1. LaunchScreen.storyboard> Показать инспектор файлов> Использовать как экран запуска
  2. LaunchScreen.storyboard> View Controller> Показать инспектор атрибутов> Is Initial View Controller
  3. Проект> Общие> Информация о развертывании> Главный интерфейс> LaunchScreen
    Повторите для [iPhone] и [iPad]
  4. Проект> Общие> Значки приложений и изображения запуска> Файл экрана запуска> LaunchScreen
  5. При правильной настройке ваш Info.plist должен иметь LaunchScreen .storyboard, без .storyboard в свойствах UILaunchStoryboardName & UIMainStoryboardFile:

    <key>UILaunchStoryboardName</key>
    <string>LaunchScreen</string>
    <key>UIMainStoryboardFile</key>
    <string>LaunchScreen</string>
    

Заметки:

  1. Это not несовместимо с устаревшими изображениями для старых устройств, использующими Launch Screen File> Assets .
  2. Обратите особое внимание на LaunchScreen.storyboard и Main.storyboard. Один используется для запуска, другой для точки входа вашего приложения. Они оба должны иметь это начальный вид контроллера установить.
8
SwiftArchitect

В раскадровке, которую вы используете для запуска, убедитесь, что вы выбрали опцию Является ли контроллер начального вида для самого отдельного контроллера представления, присутствующего в нем.

5
Davinder Singh

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

Я создал новый экран запуска в файле .storyboard, а затем, когда он не появился, я создал новый файл .xib, который все еще не появлялся при запуске приложения.

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

 the broken outlet

Обратите внимание на предупреждающий знак Литт в ссылке на розетку ->  The warning

4
Dom Bryan

Убедитесь, что вы установили точку входа и в общем информационном касании убедитесь, что у вас настроен вид для изменения размера с кончика. Также убедитесь, что на вкладке «Общие» задана точка запуска. В информации о развертывании.

Надеюсь это поможет

1
MazzaMan

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

1
amergin

У меня был черный экран вместо всплеска после локализации моего приложения. В разделе «Локализация» инспектора файлов LaunchScreen.storyboard у меня была только одна галочка для одной локализации. Итак, я добавил галочку для второй локализации, и это решило проблему.

0
Valentin Shamardin

Решение - использовать имя изображения без расширения png.

Например, если ваш файл изображения называется «img.png», используйте только «img».

Это покажет изображение как недействительное (?) В редакторе, но будет отображаться правильно при запуске.

Это происходит потому, что LaunchScreen.storyboard принимает только изображения внутри Assets.xcassets, а способ ссылки на изображения внутри Assets.xcassets - это имя ресурса без расширения.

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

0
kennymuse

Правильно ли вы установили для Main Interface значение «Main» (название раскадровки) в информации о развертывании?

0
Avijit Nagare