Как можно дольше отображать заставку на iPhone? - PullRequest
49 голосов
/ 16 февраля 2009

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

Ответы [ 24 ]

2 голосов
/ 13 июля 2009

Вот мой простой код заставки. «splashView» - это выход для представления который содержит логотип изображения, UIActivityIndicator и метку «Load ..» (добавлено на мой «MainWIndow.xib» в IB). Индикатор активности установлен в «анимации» в IB, Затем я создаю отдельный поток для загрузки данных. Когда я закончу, я удаляю splashView и добавить мой обычный вид приложения:

-(void)applicationDidFinishLaunching:(UIApplication *)application {
    [window addSubview:splashView];
    [NSThread detachNewThreadSelector:@selector(getInitialData:) 
                                 toTarget:self withObject:nil];
}

-(void)getInitialData:(id)obj {
    [NSThread sleepForTimeInterval:3.0]; // simulate waiting for server response
    [splashView removeFromSuperview];
    [window addSubview:tabBarController.view];
}
2 голосов
/ 19 июля 2015

В Xcode 6.3, вы можете показать экран запуска.xib и даже поставить индикатор на нем, сначала он покажет экран запуска по умолчанию, он заменен пером, так что пользователь не знает, что он изменился, а затем, если все загружен скрыть это :-)

    func showLaunchScreen() {
    // show launchscreen
    launchView = NSBundle.mainBundle().loadNibNamed("LaunchScreen", owner: self, options: nil)[0] as! UIView
    launchView.frame = self.view.bounds;
    self.view.addSubview(launchView)

    // show indicator
    launchScreenIndicator = UIActivityIndicatorView(frame: CGRectMake(0, 0, 50, 50)) as UIActivityIndicatorView
    launchScreenIndicator.center = CGPointMake(self.view.center.x, self.view.center.y+100)
    launchScreenIndicator.hidesWhenStopped = true
    launchScreenIndicator.activityIndicatorViewStyle = UIActivityIndicatorViewStyle.Gray
    launchView.addSubview(launchScreenIndicator)
    self.view.addSubview(launchView)
    launchScreenIndicator.startAnimating()

    self.navigationController?.setNavigationBarHidden(self.navigationController?.navigationBarHidden == false, animated: true) //or animated: false
}

func removeLaunchScreen() {
    println("remove launchscreen")
    self.launchView.removeFromSuperview()
    self.launchScreenIndicator.stopAnimating()
    self.navigationController?.setNavigationBarHidden(false, animated: true)
}
1 голос
/ 27 сентября 2012

Согласно Apple HIG, вы не должны этого делать. Но если ваше приложение должно сделать это для определенной цели, вы можете сделать:

  • импорт в ваш AppDelegate.m
  • Напишите следующую строку в первом методе "application didFinishLaunchingWithOptions:"

    sleep(//your time in sec goes here//);

1 голос
/ 15 января 2011

Самый простой способ - перевести основной поток вашего приложения в спящий режим на желаемый период времени. При условии, что «Default.png» существует в комплекте вашего приложения, оно будет отображаться, пока основной поток спит:


-(void)applicationDidFinishLaunching:(UIApplication *)application {
    [NSThread sleepForTimeInterval:5];
    window = [[UIWindow alloc] initWithFrame:[UIScreen mainScreen].bounds]; 
    [window setBackgroundColor:[UIColor yellowColor]];
    [window makeKeyAndVisible];
}

Как вы уже знаете, это ужасно плохая идея, но она должна работать просто отлично ...

1 голос
/ 20 марта 2009

Напишите фактический класс заставки.

Вот бесплатный экран заставки, который я недавно разместил в своем блоге iPhone в действии: http://iphoneinaction.manning.com/iphone_in_action/2009/03/creating-a-splash-screen-part-one.html

1 голос
/ 02 декабря 2016

Я сделал это, как показано ниже:

UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"LaunchScreen" bundle:nil];
    UIViewController *viewController = [storyboard instantiateViewControllerWithIdentifier:@"splashView"];
    self.window.rootViewController = viewController;

Примечание: LaunchScreen - это история запуска borad, а splashView - это storyboardIdentifier

1 голос
/ 16 мая 2012

просто заставьте окно спать на несколько секунд в методе applicationDidFininshLaunchings

пример: сон (3)

0 голосов
/ 03 июня 2016

При запуске приложения отображается изображение по умолчанию (default.png).

Таким образом, вы можете добавить новый viewcontroller, который будет отображать изображение по умолчанию в приложении didFinishLoading.

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

0 голосов
/ 31 августа 2016

Swift версия:

Добавить эту строку в AppDelegate

func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool {

    NSThread.sleepForTimeInterval(2.0)//in seconds

    return true
}
0 голосов
/ 11 февраля 2016

Swift 2.0

Использовать следующую строку в didFinishLaunchingWithOptions: метод делегата:

func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool {
    NSThread.sleepForTimeInterval(5.0)
    return true
}

Но я рекомендую это:

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

import UIKit
    class ViewController: UIViewController
    {
        var splashScreen:UIImageView!
        override func viewDidLoad()
        {
            super.viewDidLoad()
            self.splashScreen = UIImageView(frame: self.view.frame)
            self.splashScreen.image = UIImage(named: "Logo.png")
            self.view.addSubview(self.splashScreen)

            var removeSplashScreen = NSTimer.scheduledTimerWithTimeInterval(3.0, target: self, selector: "removeSplashImage", userInfo: nil, repeats: false)
        }
        func removeSplashImage()
        { 
            self.splashScreen.removeFromSuperview()
        }
    }
...