web-dev-qa-db-de.com

Zeigt den Startbildschirm länger als die Standardsekunden an

Kann das Default.png für eine bestimmte Anzahl von Sekunden angezeigt werden? Ich habe einen Client, der möchte, dass der Begrüßungsbildschirm länger als seine aktuelle Uhrzeit angezeigt wird.

Sie möchten, dass es für 2-3 Sekunden angezeigt wird.

37
fuzz

Nein, das default.png wird angezeigt, während Ihre App gestartet wird.

Sie können einen neuen Viewcontroller hinzufügen, der default.png in der Anwendung didFinishLoading anzeigt.

Auf diese Weise zeigen Sie das default.png etwas länger an.

Sie sollten default.png nur dann anzeigen, wenn Sie Daten laden, was einige Zeit in Anspruch nehmen kann. 

56
rckoenes

Sie können auch NSThread verwenden:

[NSThread sleepForTimeInterval:(NSTimeInterval)];

Sie können diesen Code in die erste Zeile der applicationDidFinishLaunching-Methode einfügen.

Zeigen Sie beispielsweise default.png 5 Sekunden lang an.

- (void) applicationDidFinishLaunching:(UIApplication*)application
{
   [NSThread sleepForTimeInterval:5.0];
}
36
Chetan Bhalara

Fügen Sie dies Ihrem application:didFinishLaunchingWithOptions: hinzu:

Schnell:

// Delay 1 second
RunLoop.current.run(until: Date(timeIntervalSinceNow: 1.0))

Ziel c:

// Delay 1 second
[[NSRunLoop currentRunLoop]runUntilDate:[NSDate dateWithTimeIntervalSinceNow: 1.0]];
14
Daniel Storm

Wenn Sie das LaunchScreen.storyboard verwenden, können Sie denselben View-Controller erhalten und ihn präsentieren: (Denken Sie daran, die Storyboard-ID festzulegen, z. B. "LaunchScreen".)

func applicationDidBecomeActive(application: UIApplication) {

        let storyboard = UIStoryboard(name: "LaunchScreen", bundle: nil)
        let vc = storyboard.instantiateViewControllerWithIdentifier("LaunchScreen")
self.window!.rootViewController!.presentViewController(vc, animated: false, completion: nil)
        }
7
Kappe

Das hat für mich in Xcode 6.3.2, Swift 1.2 funktioniert: 

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: "Default.png")
        self.view.addSubview(self.splashScreen)

        var removeSplashScreen = NSTimer.scheduledTimerWithTimeInterval(2.0, target: self, selector: "removeSP", userInfo: nil, repeats: false)
    }

    func removeSP()
    {
        println(" REMOVE SP")
        self.splashScreen.removeFromSuperview()
    }

    override func didReceiveMemoryWarning()
    {
        super.didReceiveMemoryWarning()
    }
}

ViewController ist die erste App VC, die geladen wird.

5
MB_iOSDeveloper

Dieses Tutorial zeigt den Startbildschirm für 2 Sekunden an. Sie können es leicht an Ihre Bedürfnisse anpassen.

- (void)showSplash {
  UIViewController *modalViewController = [[UIViewController alloc] init];
  modalViewController.view = modelView;
  [self presentModalViewController:modalViewController animated:NO];
  [self performSelector:@selector(hideSplash) withObject:nil afterDelay:yourDelay];
}
5
visakh7

Verwenden Sie folgende Zeile in der didFinishLaunchingWithOptions:-Delegatmethode:

[NSThread sleepForTimeInterval:5.0];

Der Begrüßungsbildschirm wird für 5,0 Sekunden angehalten.

5

In Swift 4.0
Für eine Verzögerung von 1 Sekunde nach der Standardstartzeit ...

RunLoop.current.run(until: Date(timeIntervalSinceNow : 1.0))
4
Hardik Trivedi

In Xcode 6.1, Swift 1.0, um den Startbildschirm zu verzögern:

Fügen Sie dies der didFinishLaunchingWithOptions hinzu.

NSThread.sleepForTimeInterval(3)

die Zeit in () ist variabel.

4
Mr. Roddy

Swift 2.0:

1)

//  AppDelegate.Swift

import UIKit
import Foundation

@UIApplicationMain

class AppDelegate: UIResponder, UIApplicationDelegate {

 var window: UIWindow?
 var splashTimer:NSTimer?
 var splashImageView:UIImageView?

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

  window = UIApplication.sharedApplication().delegate!.window!

  let splashImage: UIImage = UIImage(named: "ic_120x120.png")!
  splashImageView = UIImageView(image: splashImage)
  splashImageView!.frame = CGRectMake(0, 0, (window?.frame.width)!, (window?.frame.height)!)

  window!.addSubview(splashImageView!)
  window!.makeKeyAndVisible()

  //Adding splash Image as UIWindow's subview.
  window!.bringSubviewToFront(window!.subviews[0])

  // Here specify the timer.
  splashTimer = NSTimer.scheduledTimerWithTimeInterval(5.0, target: self, selector: "splashTimerForLoadingScreen", userInfo: nil, repeats: true)

  return true
 }
 func splashTimerForLoadingScreen() {
  splashImageView!.removeFromSuperview()
  splashTimer!.invalidate()
 }

2)

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

  NSThread.sleepForTimeInterval(9)

  OR

  sleep(9)

  return true
 }

3) Verwenden des Root-View-Controller-Konzepts:

//  AppDelegate.Swift

import UIKit
import Foundation

@UIApplicationMain

class AppDelegate: UIResponder, UIApplicationDelegate {

 var window: UIWindow?
 var splashTimer:NSTimer?
 var storyboard:UIStoryboard?

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

  window =  UIWindow(frame: UIScreen.mainScreen().bounds)
  window?.makeKeyAndVisible()

  storyboard = UIStoryboard(name: "Main", bundle: nil)

  //Here set the splashScreen VC
  let rootController = storyboard!.instantiateViewControllerWithIdentifier("secondVCID")

  if let window = self.window {
   window.rootViewController = rootController
  }

  //Set Timer
  splashTimer = NSTimer.scheduledTimerWithTimeInterval(5.0, target: self, selector: "splashTimerCrossedTimeLimit", userInfo: nil, repeats: true)

  return true
 }
 func splashTimerCrossedTimeLimit(){

  //Here change the root controller
  let rootController = storyboard!.instantiateViewControllerWithIdentifier("firstVCID")
  if let window = self.window {
   window.rootViewController = rootController
  }
  splashTimer?.invalidate()
 }
4
A.G

Sie können folgenden Code verwenden:

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{ 
    NSMutableString *path = [[NSMutableString alloc]init];
    [path setString:[[NSBundle mainBundle] resourcePath]];
    [path setString:[path stringByAppendingPathComponent:@"Default.png"]];
    UIImage *image = [[UIImage alloc] initWithContentsOfFile:path];
    [path release];

    UIImageView *imageView=[[UIImageView alloc]initWithImage:image];
    imageView.frame=CGRectMake(0, 0, 320, 480);
    imageView.tag = 2;
    [window addSubview:imageView];
    [window makeKeyAndVisible];

    // Here specify the time limit.
    timer = [NSTimer scheduledTimerWithTimeInterval:3.0 target:self selector:@selector(timerForLoadingScreen) userInfo:nil repeats:YES];
}

-(void)timerForLoadingScreen
{
    [timer invalidate];
    if ([window viewWithTag:2]!=nil) 
    {
        [[window viewWithTag:2]removeFromSuperview];
    }

    // Your any other initialization code that you wish to have in didFinishLaunchingWithOptions
}
3
Ravin

Swift 3

Dies ist auf sichere Weise möglich, indem der Splash-Controller für die von Ihnen angegebene Zeit präsentiert wird, dann entfernt und der normale rootViewController angezeigt wird.

  1. Geben Sie Ihrem Controller zunächst in LaunchingScreen.storyboard einen StoryBoard-Bezeichner, beispielsweise "splashController".
  2. Geben Sie in Main.storyboard Ihrem ersten viewController einen StoryBoard-Bezeichner, beispielsweise "initController". -Das könnte Nav oder Tab-Leiste etc sein ...-

In AppDelegate können Sie diese beiden Methoden erstellen:

  1. private func extendSplashScreenPresentation(){
        // Get a refernce to LaunchScreen.storyboard
        let launchStoryBoard = UIStoryboard.init(name: "LaunchScreen", bundle: nil)
        // Get the splash screen controller
        let splashController = launchStoryBoard.instantiateViewController(withIdentifier: "splashController")
        // Assign it to rootViewController
        self.window?.rootViewController = splashController
        self.window?.makeKeyAndVisible()
        // Setup a timer to remove it after n seconds
        Timer.scheduledTimer(timeInterval: 5, target: self, selector: #selector(dismissSplashController), userInfo: nil, repeats: false)
    }
    

2.

@objc private func dismissSplashController() {
    // Get a refernce to Main.storyboard
    let mainStoryBoard = UIStoryboard.init(name: "Main", bundle: nil)
    // Get initial viewController
    let initController = mainStoryBoard.instantiateViewController(withIdentifier: "initController")
    // Assign it to rootViewController
    self.window?.rootViewController = initController
    self.window?.makeKeyAndVisible()
}

Jetzt rufst du an 

 self.extendSplashScreenPresentation()

in didFinishLaunchingWithOptions.

Sie sind bereit zu gehen ...

3
Ehab Saifan

1.Fügen Sie in "didFinishLaunchingWithOptions" einen weiteren View-Controller hinzu

 UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"Main" bundle:nil];

UINavigationController *homeNav = [storyboard instantiateViewControllerWithIdentifier:@"NavigationControllerView"];
UIViewController *viewController = [storyboard instantiateViewControllerWithIdentifier:@"SplashViewController"];

self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
self.window.rootViewController = homeNav;
[self.window makeKeyAndVisible];

[(UINavigationController *)self.window.rootViewController pushViewController:viewController animated:NO];
}

2.In View wurde der SplashView Controller geladen

  [self performSelector:@selector(removeSplashScreenAddViewController) withObject:nil afterDelay:2.0];

3.In der removeSplashScreenAddViewController-Methode können Sie Ihren Hauptansicht-Controller hinzufügen, z.

- (void) removeSplashScreenAddViewController {`  UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"Main" bundle:nil];
UINavigationController *homeNav = [storyboard instantiateViewControllerWithIdentifier:@"HomeNav"];
UIViewController *viewController = [storyboard instantiateViewControllerWithIdentifier:viewControllerName];

UIWindow *window =  [StaticHelper mainWindow];
window.rootViewController = homeNav;
[window makeKeyAndVisible];

[(UINavigationController *)window.rootViewController pushViewController:viewController animated:NO];`}
2
shweta sharma

sleep(5.0) schreiben 

in - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions für 5 Sekunden wird der Startbildschirm angezeigt

2
Dhara

Der einfachste Weg, dies zu erreichen, besteht darin, eine UIImageView mit "Default.png" oben in der UIView Ihres ersten ViewControllers zu erstellen. 

Fügen Sie einen Timer hinzu, um die UIImageView nach den erwarteten Sekunden zu entfernen.

1
xhan

Fügen Sie default.png in einem UIImageView-Vollbild als Unteransicht oben in der Hauptansicht ein und decken Sie damit Ihre andere Benutzeroberfläche ab. Stellen Sie einen Timer ein, um ihn nach x Sekunden (möglicherweise mit Effekten) zu entfernen, und Ihre Anwendung wird jetzt angezeigt.

1
Tomasz Stanczak

Die einfachste Lösung hier ist, der didFinishLaunchingWithOptions-Methode in Ihrer AppDelegate-Klasse sleep() hinzuzufügen. 

Swift 4:

sleep(1)
  • verzögert den LaunchScreen um 1 Sekunde.

Wenn Sie etwas schicker machen möchten, können Sie das aktuelle RunLoop auch auf dieselbe Weise erweitern:

Swift 4:

RunLoop.current.run(until: Date(timeIntervalSinceNow: 1))
1
MHCsk

Das funktioniert...

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
    // Load Splash View Controller first
    self.window = [[UIWindow alloc] initWithFrame:UIScreen.mainScreen.bounds];
    UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"MainStoryboard" bundle:nil];
    UIViewController *viewController = [storyboard instantiateViewControllerWithIdentifier:@"Splash"];
    self.window.rootViewController = viewController;
    [self.window makeKeyAndVisible];

    // Load other stuff that requires time

    // Now load the main View Controller that you want
}
1
Euwing Tham

In Swift 4.2

Für Verzögerung 1 Sekunde nach Standardstartzeit ...

Thread.sleep(forTimeInterval: 1)
0
srsstyle

Sie können Ihre eigene Ansicht erstellen und beim Start der Anwendung anzeigen und mit dem Timer ausblenden. Vermeiden Sie es, den Start der App als schlechte Idee zu verzögern 

0
Umair Khalid

Fahren Sie einfach mit dem Projektnamen fort. Klicken Sie dann mit der rechten Maustaste auf/properties/Application-Tab . Suchen Sie "Anwendungsereignisse anzeigen" in der Nähe des Schrägstrich-Kombinationsfelds . Kopieren Sie diesen Code in myApplication-Klasse:

        Private Sub MyApplication_Startup(sender As Object, e As StartupEventArgs) Handles Me.Startup
              System.Threading.Thread.Sleep(3000) ' or other time
        End Sub
0
Sharif Lotfi