UIButton становится неодушевленным после того, как пользователь нажмет кнопку «Домой» - PullRequest
0 голосов
/ 22 февраля 2019

У меня есть UIButton, называемый findButton, с пульсирующей или дышащей анимацией.При тестировании приложения на симуляторе и устройстве все работает отлично, пока я не нажму кнопку «Домой» во время анимации.Если я нажимаю кнопку «Домой», а затем снова открываю приложение, анимация больше не происходит.

Я пробовал разные ответы, найденные на этом сайте, но ни один из них не помог.Я пытался использовать Extensions и NotificationCenter, но ничто из того, что якобы работало для людей в прошлом, не работает для меня.Вот код анимации, который прекрасно работает до нажатия кнопки «Домой»:

override func viewWillAppear(_ animated: Bool) {

    UIView.animate(withDuration: 1.0,
                   delay: 0,
                   options: [.autoreverse, .repeat, .allowUserInteraction],
                   animations: {
                    self.findButton.transform = CGAffineTransform(scaleX: 1.175, y: 1.175)}, completion: nil)
} 

Интересно, может быть, мне нужно приостановить анимацию, прежде чем она перейдет в фоновый режим?

ОБНОВЛЕНИЕ : я смог заставить 'findButton' работать при нажатии, перемещая анимацию, которая появляется ПОСЛЕ того, как она нажата.Я создал новый VC и class и поместил findButton IBAction с анимацией после щелчка там.

К сожалению, findButton по-прежнему неодушевлен после возвращения из фона.Я надеюсь, что NoticationCenter будет работать теперь, когда я переместил анимацию после щелчка из первого VC.

Ответы [ 2 ]

0 голосов
/ 23 февраля 2019

@ ответ pooja определенно укажет вам правильный путь.Но если вы используете iOS 12, Xcode 10, Swift 4.2, то при внедрении NotificationCenter вы столкнетесь с некоторыми ошибками.Попробуйте код @ pooja, но внесите следующие изменения:

NotificationCenter.default.addObserver(self, selector:#selector(doSomethingBefore), name: UIApplication.didEnterBackgroundNotification, object: nil)

NotificationCenter.default.addObserver(self, selector:#selector(doSomething), name: UIApplication.willEnterForegroundNotification, object: nil)
0 голосов
/ 22 февраля 2019

Вы можете попробовать зарегистрироваться для приложения, которое вводило фон

 NotificationCenter.default.addObserver(self, selector:#selector(doSomethingBefore), name: NSNotification.Name.UIApplicationDidEnterBackground, object: nil)

Регистрация приложения станет активной

NotificationCenter.default.addObserver(self, selector:#selector(doSomething), name: NSNotification.Name.UIApplicationWillEnterForeground, object: nil)

Установить преобразование для кнопки при исчезновении вида

  @objc func doSomethingBefore(){
        findButton.transform = .identity
    }

Запуск анимации, когда приложение становится активным

 @objc func doSomething(){
        self.view.layoutIfNeeded()
        UIView.animate(withDuration: 1.0,
                       delay: 0.3,
                       options: [.autoreverse, .repeat, .allowUserInteraction],
                       animations: {
                        self.findButton.transform = CGAffineTransform(scaleX: 1.175, y: 1.175)}, completion: nil)
        self.view.layoutIfNeeded()

    }

Вы можете увидеть рабочий образец здесь

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...