iPhone-сделайте что-нибудь во время отображения заставки


Хорошо. Я знаю, как отобразить заставку на iPhone. Кажется, достаточно просто (т. е. установка по умолчанию.png и вызов команды "sleep").

Но, действительно ли приложение делает что-нибудь в это время? Мое приложение должно пойти и получить некоторые данные из Интернета, прежде чем показывать Первый экран приложения, но когда я делаю экран-заставку, кажется, что он не делает этого, показывая изображение-заставку.

Могу ли я actaully заставить приложение делать что-то, показывая всплеск экран?

5 3

5 ответов:

Лучшим способом было бы структурировать ваше приложение несколько иначе.

Сделайте ваше приложение отображаемым по умолчанию.png, когда он его запускает (т. е. поместите UIImageView на экран), а затем начните выборку данных.

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

Где вы получили идею, что вам нужно вызвать "sleep", показывая по умолчанию.png и ничего не происходит, пока это изображение отображается? По умолчанию.png отображается, когда ОС загружает ваше приложение. Вы ничего не можете сделать за это время. На самом деле у вас еще нет никакого контроля. Он обрабатывается ОС. Идея заключается в том, чтобы дать пользователю ощущение, что приложение загружается быстро, но на самом деле ваше приложение не полностью загружено, пока по умолчанию.png показывает вместо черного экрана ОС.

Вы можете вручную добавить представление, похожее на ваш splashscreen, после запуска приложения и обрабатывать работу в фоновом режиме. Я бы также добавил подсказку пользователю, которая указывает "загрузка данных", потому что приложение должно запуститься в течение 3 секунд.

Если Вы читаете Guidlines человеческого интерфейса, они довольно ясны, что по умолчанию.png не предназначен для того, чтобы быть фирменной заставкой. Он предназначен для создания статической "оболочки" начальной страницы пользовательского интерфейса, так что пользователь испытывает быструю загрузку. Так что он совсем не предназначен для того, для чего его используют многие приложения (включая некоторые из моих).

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

Как правило, все вызовы awakeFromNib в контроллерах вида выполняются во время загрузки приложения (т. е. имеет экран-заставку вверх). Когда я ставлю точки останова в своих приложениях при вызовах awakeFromNib, точки останова срабатывают, когда splashscreen включен и приложение загружается. Так что все, что вы делаете в эти вызовы будут обработаны, пока экран загрузки включен.