Добавить анимацию в UILabel при открытии страницы - PullRequest
0 голосов
/ 20 июня 2019

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

  @IBOutlet weak var welcomeLabel: UILablel!

Я сделал эту функцию и добавил ее к viewdidload, но она не показывает никакой анимации, также, когда я нажимаю на нее, происходит сбой сэта ошибка:

Thread 1: Fatal error: Unexpectedly found nil while implicitly unwrapping an Optional value

вот функция:

func addAnimation() {
    UILabel.animate(withDuration: 3, delay: 3, usingSpringWithDamping: 1, initialSpringVelocity: 1, options: .curveEaseOut, animations: {
        self.welcomeLabel.transform = CGAffineTransform(translationX: 0, y: -200)
    })
}

Я также знаю, что это не анимация, которую я запустил, я просто добавляю ее для теста.Не могли бы вы помочь мне написать нужную анимацию, которую я хотел:

Начните исчезать и двигайтесь снизу к центру страницы.

Большое вам спасибо

Ответы [ 2 ]

0 голосов
/ 20 июня 2019

Создайте @IBOutlet из UILabel, поместите метку в центр экрана и добавьте необходимые constraint.

Создать @IBOutlet of label center Y alignment of Constraint, как показано ниже.

    @IBOutlet weak var centerY: NSLayoutConstraint!

Затем измените его постоянное значение.

    override func viewDidAppear(_ animated: Bool) {
        super.viewDidAppear(animated)
        centerY.constant =  self.view.bounds.height/2
        self.view.layoutIfNeeded()
        addAnimation()
    }

    func addAnimation(){
        UIView.animate(withDuration: 1, delay: 0, options: [.curveEaseOut], animations: {
            self.centerY.constant = 0
            self.welcomeLabel.alpha = 1.0
            self.view.layoutIfNeeded()
        }, completion: nil)

    }
0 голосов
/ 20 июня 2019

Во-первых, ваш ярлык не подключен к контроллеру вида. Из-за этого вы получаете эту ошибку.

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

Например:

UIView.animate(withDuration: 0.3)  {
   self.centerY.constant = //your value
   self.label. alpha = 1
   self.view.layoutIfNeeded()
}
...