Как отложить Default.png?

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


person Moshe    schedule 17.03.2010    source источник


Ответы (6)


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

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

person toholio    schedule 17.03.2010
comment
Как и Apple: developer.apple.com/iphone/library/documentation/UserExperience/ Избегайте отображения окна" О программе ", экрана-заставки или предоставления любого другого типа запуска, который мешает людям использовать ваш приложение немедленно. - person Brad Larson; 17.03.2010
comment
Блин, просто спрашиваю. Если у Apple возникнет проблема, они могут сами меня отругать. Они вполне способны. :) - person Moshe; 18.03.2010
comment
@Moshe: Лучше, если вы услышите это от нас, чем от Apple (после нескольких недель обзора) или, что еще хуже, от ваших пользователей. В любом случае мы не пытаемся ругать, а просто указываем свое мнение по теме. Я склонен полагаться на Apple, когда дело касается пользовательского интерфейса, потому что они много думали об этом. - person Brad Larson; 18.03.2010
comment
Хотя общее правило заключается в том, что вы не должны использовать спящий режим при загрузке приложения, я бы не сказал, что вам никогда не следует этого делать. Особенно в простых приложениях, которые загружаются очень и очень быстро. Нет никакой разницы для пользователя или Apple, если вы переведете поток в спящий режим на короткое время или отключите изображение по умолчанию при загрузке. Возможно, многие люди будут меня за это осуждать, но если ваше приложение загружается за 0,1 секунды, имеет ли значение, если вы спите 0,3 секунды, чтобы пользователи могли увидеть ваш экран-заставку? Лучше, чем дополнительные накладные расходы на отключение просмотра, ИМО. - person memmons; 12.11.2010
comment
@Brad - Тем не менее, они пропустили МНОЖЕСТВО приложений с экранами-заставками. Одному из моих нужно предварительно загрузить некоторые данные при запуске, и на самом деле нет лучшего способа, чем создать представление, которое является моим экраном-заставкой, с отображением на нем прогресса. - person Dan Ray; 04.03.2011
comment
@Harkonian: Default.png - дать пользователю возможность сразу же получить обратную связь о запуске приложения. Это не для того, чтобы показывать экран-заставку, и его задержка, чтобы пользователь мог дольше видеть экран-заставку, является полной противоположностью тому, для чего он предназначен. Если ваше простое приложение загружается очень быстро, это хорошо, а не ошибка, которую нужно исправлять, и вам следует сделать Default.png статическое изображение исходного пользовательского интерфейса. - person Jim; 04.03.2011
comment
Вы являетесь художником своего приложения, а не Apple, и искусство не всегда любит правила. Кстати, идти против течения - это именно то, что сделала Apple Apple. - person liquid; 15.06.2018

ОБНОВЛЕНИЕ: Нет, серьезно, НЕ делайте этого!

Или нам функция C

sleep(9);

Если ввести это в applicationDidFinishLaunching:, программа остановится на 9 секунд, также можно ввести любое другое целое число.

РЕДАКТИРОВАТЬ: Я многому научился за последний год. Не делай этого. Причина в том, что трамплин автоматически остановит запуск приложения, если это займет слишком много времени. Это время плохо задокументировано, поэтому даже одна секунда может привести к сбою приложения.

person Dustin Pfannenstiel    schedule 18.03.2010
comment
9 - это слишком долго, но, возможно, одна секунда. Могу ли я поставить поплавок (т.е. 1.5)? - person Moshe; 18.03.2010
comment
Я просто выбрасывал номер. Вы можете использовать любое целое число, но оно должно быть целым. - person Dustin Pfannenstiel; 19.03.2010
comment
-1. Никогда не помещайте в applicationDidFinishLaunching большие задержки или что-либо, требующее больших затрат времени. Используйте таймер в другом потоке или что-то подобное; но быстро вернуться из applicationDidFinishLaunching. См. stackoverflow.com/questions/169470/ - person occulus; 27.09.2012
comment
Такая задержка также полезна, когда вы хотите увидеть, как отображается xib вашего экрана запуска. - person Clifton Labrum; 02.10.2014

Этот вопрос аналогичен: экран-заставка, например, тап-тап-месть 3

По сути, в вашем applicationDidFinishLaunching: добавьте представление изображения поверх других представлений, содержащих ваш Default.png.

person Ben Gottlieb    schedule 17.03.2010

См. Выше обсуждение того, почему вам, вероятно, не следует задерживать загрузку приложения таким образом. Но если у вас есть сценарий, в котором кратковременный сон предпочтительнее накладных расходов на отключение представления, используйте sleepForTimeIntervale NSThread вместо sleep (). Это более дружественно к фреймворку, и у вас есть более детальный контроль над временем сна:

[NSThread sleepForTimeInterval:0.75]
person memmons    schedule 12.11.2010
comment
Проблема с этим подходом в том, что он блокирует все. Если вы нажмете кнопку домой во время перехода в спящий режим, ничего не произойдет. Попробуйте с большим интервалом сна, и это станет более очевидным. - person greenisus; 15.12.2010

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

- (void)applicationDidBecomeActive:(UIApplication *)application

{

UIImageView *defaultImageView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"[email protected]"]];
[self.window addSubview:defaultImageView];
sleep(2);
[defaultImageView removeFromSuperview];
[defaultImageView release];
/*
 Restart any tasks that were paused (or not yet started) while the application was inactive. If the application was previously in the background, optionally refresh the user interface.
 */

}

person Mobilewits    schedule 28.09.2012

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

sleepForTimeInterval

", Если вы хотите узнать время запуска, сделайте следующее:

- (void) applicationDidFinishLaunching:(UIApplication*)application
{
   [NSThread sleepForTimeInterval:8.0];
}

Это задержит запуск на 8 секунд.

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

person Aks    schedule 01.03.2017