Как увеличить или уменьшить время экрана заставки / запуска экрана реагировать на родной ios? [Дубликат]

В модуле исключений Python 3 был удален, и все стандартные исключения были перемещены во встроенный модуль. Это означает, что больше не нужно делать явный импорт любых стандартных исключений.

blockquote>

скопирован из

34
задан James Webster 7 August 2015 в 11:50
поделиться

18 ответов

Самый простой способ добиться этого - создать файл UIImageView с «Default.png» в верхней части вашего первого ViewController UIView.

И добавьте таймер, чтобы удалить UIImageView в считанные секунды.

51
ответ дан fuzz 31 August 2018 в 09:51
поделиться

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) Использование концепции контроллера корневого представления:

//  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 31 August 2018 в 09:51
поделиться

Вы также можете использовать NSThread:

[NSThread sleepForTimeInterval:(NSTimeInterval)];

Вы можете поместить этот код в первую строку из метода applicationDidFinishLaunching.

Например, отобразите default.png в течение 5 секунд.

- (void) applicationDidFinishLaunching:(UIApplication*)application
{
   [NSThread sleepForTimeInterval:5.0];
}
33
ответ дан Aron Rotteveel 31 August 2018 в 09:51
поделиться

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

Или, альтернативно, используйте другой ImageView для настройки заставки.

Подробнее см. подробности по следующей ссылке:

Проблема с заставкой

-1
ответ дан Community 31 August 2018 в 09:51
поделиться

Добавьте это к своему application:didFinishLaunchingWithOptions::

Swift:

// Delay 1 second
NSRunLoop.currentRunLoop().runUntilDate(NSDate(timeIntervalSinceNow: 1))

Цель C:

// Delay 1 second
[[NSRunLoop currentRunLoop]runUntilDate:[NSDate dateWithTimeIntervalSinceNow: 1]];
8
ответ дан Daniel Storm 31 August 2018 в 09:51
поделиться

Записать sleep(5.0)

в - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions в течение 5 секунд будет отображаться экран заставки

2
ответ дан Dhara 31 August 2018 в 09:51
поделиться

Swift 3

Это можно сделать безопасным способом, представив контроллер всплеска, что бы вы ни указали, затем удалите его и покажите свой обычный rootViewController.

  1. Сначала в LaunchingScreen.storyboard дать вашему контроллеру идентификатор StoryBoard, скажем, «splashController»
  2. В Main.storyboard дать вашему первоначальному viewController идентификатор StoryBoard, скажем, «initController». - Это может быть панель навигации или табуляции и т. Д. ...-

В AppDelegate вы можете создать эти 2 метода:

  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()
}

Теперь вы вызываете

 self.extendSplashScreenPresentation()

в файле doneFinishLaunchingWithOptions.

У вас установлено значение go ...

3
ответ дан Ehab Saifan 31 August 2018 в 09:51
поделиться

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

[NSThread sleepForTimeInterval:5.0];

Он остановит экран заставки на 5,0 секунд.

5
ответ дан EI Captain v2.0 31 August 2018 в 09:51
поделиться

Это работает ...

- (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 31 August 2018 в 09:51
поделиться

В быстром 4.0 Задержка 1 секунды после запуска по умолчанию ...

RunLoop.current.run(until: Date(timeIntervalSinceNow : 1.0))
1
ответ дан Hardik Trivedi 31 August 2018 в 09:51
поделиться

Если вы используете LaunchScreen.storyboard, вы можете получить тот же контроллер вида и представить его: (не забудьте установить идентификатор раскадровки, например «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)
        }
6
ответ дан Kappe 31 August 2018 в 09:51
поделиться

В Xcode 6.1 Swift 1.0 для задержки экрана запуска:

Добавьте это к didFinishLaunchingWithOptions

NSThread.sleepForTimeInterval(3)

, время в переменной () является переменной.

4
ответ дан Lorenz Meyer 31 August 2018 в 09:51
поделиться

Это работало для меня в Xcode 6.3.2, Swift 1.2:

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 - это первое приложение VC, которое загружается.

5
ответ дан Martin Thompson 31 August 2018 в 09:51
поделиться

Простейшим решением здесь является добавление метода sleep() к didFinishLaunchingWithOptions в ваш класс AppDelegate.

Swift 4:

sleep(1)
  • задерживает LaunchScreen на 1 секунду.

Если вы хотите что-то сделать, вы также можете продлить текущий RunLoop тем же способом:

Swift 4:

RunLoop.current.run(until: Date(timeIntervalSinceNow: 1))
1
ответ дан MHCsk 31 August 2018 в 09:51
поделиться

Просто запустите название проекта. затем щелкните правой кнопкой мыши / свойства / вкладку приложения. Найдите «Просмотреть события приложения» рядом с полем «Слэш». скопируйте этот код в myApplication Класс:

        Private Sub MyApplication_Startup(sender As Object, e As StartupEventArgs) Handles Me.Startup
              System.Threading.Thread.Sleep(3000) ' or other time
        End Sub
0
ответ дан rptwsthi 31 August 2018 в 09:51
поделиться

1. Добавить другой контроллер представления в «didFinishLaunchingWithOptions»

 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.В просмотре была загружена функция SplashView Controller

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

3.В методе removeSplashScreenAddViewController вы можете добавьте свой главный контроллер вида, например .-

- (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 31 August 2018 в 09:51
поделиться

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

1
ответ дан Tomasz Stanczak 31 August 2018 в 09:51
поделиться

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

0
ответ дан Umair Khalid 31 August 2018 в 09:51
поделиться
Другие вопросы по тегам:

Похожие вопросы: