Экран загрузки приложений и всплывающих окон

Мое приложение загружает довольно много данных, что занимает несколько секунд. Мой экран заставки отображается, а затем исчезает, а затем появляется белый пустой экран в течение нескольких секунд до загрузки первого вида. Есть ли способ сохранить экран заставки? Можно ли создать представление в AppDelegate и оставить его отображаемым до тех пор, пока все загрузки данных не будут завершены и представление будет загружено?

Ответ 1

Использование MBProgressHUD Здесь вы можете получить весь исходный код.

https://github.com/jdg/MBProgressHUD

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

Это вид загрузки, который является индикатором активности.

ИЗМЕНИТЬ:

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

[window addSubview:<backgroundView>.view];

Затем, как только данные будут загружены, вы можете удалить их из окна и добавить свой главный контроллер представления в окно

[<backgroundView>.view removeFromSuperView];
[window addSubview:<mainView>.view];

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

Ответ 2

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

Ответ 3

Белый вид, который вы видите перед фактическим видом, является основным. Непосредственно установите заставку в качестве фонового изображения вашего окна в MainWindow.xib, и все готово. При желании вы также можете добавить прядильщик, который всегда вращается в верхней части окна, так что, когда ваше приложение загружается, вы сначала видите заставку, затем экран spalsh со счетчиком, а затем появляется ваше представление.

Ответ 4

Я загружаю ImageView с образцом по умолчанию в viewDidLoad и спрячу его, если вы претерпели данные.

    UIImage* imageDefault = [UIImage imageNamed:@"[email protected]"];
    CGRect frame;
    frame.origin.x = 0;
    frame.origin.y = -20;
    frame.size.width = 320;
    frame.size.height = 480;

    splash = [[[UIImageView alloc] initWithFrame:frame] autorelease];
    [splash setImage:imageDefault];
    [self.view addSubview:splash];
   .
   .


    splash.hidden=YES;