Сделайте пользовательскую страницу запуска в моем приложении IOS с исчезающим изображением - PullRequest
0 голосов
/ 03 января 2019

Итак, я делаю первую страницу для моего приложения.Я перехожу к следующему экрану с таймером.Однако мой вопрос о моей первой странице.Когда я запускаю приложение, я хочу, чтобы изображение, которое я использую, появилось сразу.Я даже не уверен, если это вариант.потому что все приложения, которые я вижу, при запуске требуют некоторого времени для загрузки.Мне было интересно, является ли это причиной задержки появления изображения, или я могу сделать что-то, чтобы оно появилось мгновенно?Я приложил мой код ниже:

import UIKit

class LaunchViewController: UIViewController {

    override func viewWillAppear(_ animated: Bool) {

    }
    override func viewDidLoad() {
        super.viewDidLoad()
        let gameTimer = Timer.scheduledTimer(timeInterval: 3, target: self, selector: #selector(runTimedCode), userInfo: nil, repeats: false)
    }
    override func viewDidAppear(_ animated: Bool) {
        let imageView = UIImageView()
        imageView.image = UIImage(named: "image1")
        self.view.addSubview(imageView)

        imageView.fadeOut()
        imageView.contentMode = .scaleAspectFit
        imageView.translatesAutoresizingMaskIntoConstraints = false
        imageView.centerXAnchor.constraint(equalTo: view.centerXAnchor).isActive = true
        imageView.centerYAnchor.constraint(equalTo: view.centerYAnchor).isActive = true
        imageView.topAnchor.constraint(equalTo: view.topAnchor,constant:20).isActive = true
        imageView.bottomAnchor.constraint(equalTo: view.bottomAnchor,constant:30).isActive = true
        imageView.trailingAnchor.constraint(equalTo: view.trailingAnchor,constant:10).isActive = true
        imageView.leadingAnchor.constraint(equalTo: view.leadingAnchor,constant:10).isActive = true
    }

    @objc func runTimedCode()
    {
        self.performSegue(withIdentifier: "fromLaunch", sender: self)
    }
}
extension UIView {

    func fadeIn(){
        UIView.animate(withDuration: 3.0, delay: 0.0, options: UIView.AnimationOptions.curveEaseIn, animations: {
            self.alpha = 1.0
        }, completion: nil)
    }

    func fadeOut(){
        UIView.animate(withDuration: 2.0, delay: 1.0, options: UIView.AnimationOptions.curveEaseOut, animations: {
            self.alpha = 0.0
        }, completion: nil)
    }

}

Ответы [ 2 ]

0 голосов
/ 03 января 2019

Было бы лучше переместить ваш код в viewDidLoad . viewDidLoad вызывается только один раз в течение жизненного цикла UIViewController.Хотя viewDidAppear может вызываться несколько раз.

Поскольку вы используете Autolayout, вам не нужно заботиться о правильном размере подпредставлений, и перемещения кода в viewDidLoad должно быть достаточно, и это должно решить проблему.с задержкой вы спросили о.

0 голосов
/ 03 января 2019

Вы можете попробовать переместить код с viewDidAppear на viewWillLayoutSubviews.

Обратите внимание, однако, что всегда задержка между нажатием пользователем значка вашего приложения и появлением вашего первого экрана. Вот почему у вас есть LaunchScreen.storyboard - это то, что отображается во время этой задержки. Поэтому, возможно, вам следует поместить свое изображение в LaunchScreen.storyboard. Обратите внимание, что вы не можете запустить любой код вместе с LaunchScreen.storyboard.

...