Ich habe eine einfache iPhone-Anwendung, die sehr schnell lädt, so dass der Begrüßungsbildschirm nur für einen Bruchteil einer Sekunde angezeigt wird. Gibt es eine Möglichkeit zu steuern, wie lange der Begrüßungsbildschirm angezeigt wird? Ich habe herumgesucht und nichts gefunden, was so aussieht, als würde es funktionieren. Muss ich eine Unteransicht mit meinem Splash-Bild erstellen? Wie würde ich die Anzeigezeit steuern und zwischen der Unteransicht und der Hauptansicht wechseln?Anzeige Splash/Ladebildschirm länger auf iPhone
Antwort
Während ich mit den Ansichten zum Ausdruck gebrachten und in der anderen Frage, warum sollten Sie nicht „missbrauchen“, um den Standard-Bildschirm, es scheint mir ziemlich trivial zu erreichen diesen Effekt einig:
Beim Anfahren, einfach ausgedrückt eine Ansicht, die genau wie der Startbildschirm aussieht und verwenden Sie eine NSTimer
, um es zu entlassen. Wirklich ziemlich einfach.
// viewDidLoad
[self performSelector:@selector(dismiss)
withObject:nil
afterDelay:yourTimeIntervalInSectons];
// dismiss
[self performSegueWithIdentifier:@"ID" sender:nil];
Allerdings muss der Begrüßungsbildschirm nicht jedes Mal aktiviert werden, wenn die Anwendung aktiv wird. Ich habe das einmal für einen sehr spezifischen und nützlichen Zweck im Kontext meiner App getan - aber Apple hat es abgelehnt. Hey, sie haben mich sogar am Samstag Abend angerufen, um es mir zu erklären.
Tun Sie dies nicht und/oder lesen, warum hier
iOS Duration of Splash Screen (Default.png)
Es ist wirklich keinen Sinn macht, die Dauer des Default.png zu verlängern.
Während ich mit allem, was ist schon hier gesagt zustimmen, ich hatte einmal auch einen Begrüßungsbildschirm mit einem Timer zu implementieren, also hier ist der Code:
- (void)showSplashWithDuration:(CGFloat)duration
{
// add splash screen subview ...
UIImage *image = [UIImage imageNamed:@"Default.png"];
UIImageView *splash = [[UIImageView alloc] initWithImage:image];
splash.frame = self.window.bounds;
splash.autoresizingMask = UIViewAutoresizingNone;
[self.window addSubview:splash];
// block thread, so splash will be displayed for duration ...
CGFloat fade_duration = (duration >= 0.5f) ? 0.5f : 0.0f;
[NSThread sleepForTimeInterval:duration - fade_duration];
// animate fade out and remove splash from superview ...
[UIView animateWithDuration:fade_duration animations:^ {
splash.alpha = 0.0f;
} completion:^ (BOOL finished) {
[splash removeFromSuperview];
}];
}
Rufen Sie einfach die Funktion irgendwo in Ihrer -applicationDidFinishLaunching:withOptions:
Methode des AppDelegate
@ asgeo1: Code funktioniert bei mir ganz gut (ich habe in mehreren Projekten ähnlichen Code verwendet wird). Ich habe eine example project auf meiner Dropbox für Ihre Bequemlichkeit hinzugefügt.
Ich glaube nicht, dass das funktioniert. Dies ist nicht anders als nur Schlaf() zu nennen; In meinen Tests konnte ich "Default.png" in ein nicht vorhandenes Bild ändern - "DoesNotExist.png ", und es würde immer noch den 'Splash' Bildschirm für die Dauer zeigen - aber nur, weil es geschlafen hat. Es wird das referenzierte Bild überhaupt nicht rendern. Ich würde diesen Ansatz nicht empfehlen. – asgeo1
@ asgeo1: for your Ich habe ein Beispielprojekt hinzugefügt, damit Sie selbst sehen können, dass der Code einwandfrei funktioniert –
Vielen Dank für das Beispiel, aber ich glaube nicht, dass Sie verstanden haben, was ich gesagt habe Ja - einen Schlaf() Anruf tätigen wird dazu führen, dass das "loading image" (wie im plist angegeben) für eine lange Zeit angezeigt wird. Aber der Rest deines Codes ist redundant. Das Bit dort, das die UIImageView * erstellt, funktioniert nicht. * Glaub mir nicht? Ändern von 'Default.png' in ein anderes Bild Es wird nicht funktionieren - das Standardbild wird angezeigt, da nur iOS das Ladebild von der PLIST (' UILaunchImageName') anzeigt, nicht weil Sie dem Fenster eine UIImageView hinzugefügt haben ! – asgeo1
Jetzt stimme ich völlig mit den oben genannten Posts überein, dass Sie dies nicht tun sollten, aber wenn Sie immer noch wünschen, kann sehr leicht erreicht werden, indem Sie das folgende zu Ihrem AppDelegate.m
hinzufügen.
Die "2" gibt an, wie viele Sekunden für den Schlaf benötigt werden. Werte wie ".5" werden akzeptiert.
Nein funktioniert für mich, wie es gibt ein Leerzeichen beim Übergang von der Ansicht zur anderen –
- 1. länger als fünf Sekunden iphone klingt
- 2. Anzeige keine Arbeit nicht auf iphone
- 3. Anzeige: Keine funktioniert auf iPhone Simulator
- 4. PDF-Anzeige/Annotationsbibliothek für iPhone?
- 5. Eine Anzeige immer vorne auf dem iPhone platzieren?
- 6. iPhone: NSTimer Countdown (Anzeige Minuten: Sekunden)
- 7. Fets Problem länger lesen() Anrufe auf Linux
- 8. Anzeige der Bilder in gridview + iphone
- 9. Seitenrendering dauert länger
- 10. Eingabe-Array ist länger
- 11. Matplotlib: x-Achse länger machen
- 12. Anzeige picker beim Klopfen auf UISearchController (Searchbar)
- 13. Retina-Anzeige VS normale Anzeige Farbdifferenz
- 14. Normale Select-Abfrage dauert länger
- 15. Knopf gedrückt Animation länger sein
- 16. offsetLeft JavaScript-Eigenschaft dauert länger
- 17. Iphone OS 3.1 vs 3.2 plus UIView Hintergrundbild Anzeige Problem
- 18. iAd & Admob Interstitial Integration auf dem iPhone
- 19. Tabellenansicht - Anzeige wie - # Around Me - Google # - in iPhone
- 20. Anzeige Bing Map auf Modal
- 21. Anzeige mehrerer Zeichenfolgen auf Logcat
- 22. Anzeige Excel auf Web-Anwendungen
- 23. Anzeige 2 Tabellen auf codeigniter
- 24. Anzeige einer Spalte auf einmal
- 25. Anzeige auf einer Taste Winkel
- 26. Anzeige braintree Fehler auf scheitern
- 27. Anzeige nvd3 rChart auf Flexdashboard
- 28. Anzeige animierte gif auf JPanel
- 29. WPF auf sekundärer Anzeige starten?
- 30. Anzeige langer Texte auf tvOS
Wenn Sie die Dauer des Begrüßungsbildschirms verlängern, erhält der Benutzer den Eindruck, dass Ihre App langsam ist und viel Zeit zum Laden benötigt. Das ist das Gegenteil von dem, was du auf einem iPhone haben willst. Wenn deine App langsam ist, werden die Leute es nicht mögen und sie werden es löschen. – EmilioPelaez
Ich verstehe Ihren Standpunkt und es macht Sinn. aber für meinen Fall, ich gebe es nicht an den App Store, es ist für eine Software-Klasse und ich brauche nur meinen Namen und mein Logo, um lange genug zu sehen. Danke – Joey
Es gibt einen guten Blog-Beitrag hier, wie man einen Splash-Screen mit einem 'UIImageView' mit einem Timer erstellt: http://nullpointr.wordpress.com/2012/02/19/iphone-dev-how-to-implement -a-splash-screen/Nützlich für Anfänger, die immer noch den besten Weg lernen, Dinge in iOS zu tun. – asgeo1