Анимации UIView предотвращены после возврата из фона ios8 (Rubymotion)

Я пытаюсь перезапустить анимацию UIView после того, как пользователь возвращается в приложение из фона.

Вот анимация:

  def animate_glow
    UIView.animateWithDuration(GLOW_SPEED,
      delay: 0.0,
      options: UIViewAnimationOptionRepeat |
               UIViewAnimationOptionAutoreverse |
               UIViewAnimationOptionAllowUserInteraction,
      animations: -> {
        @swipe_glow.transform = CGAffineTransformMakeScale(GLOW_SCALE, GLOW_SCALE)
      },
      completion: nil
    )
  end

Слушая для UIApplicationWillEnterForegroundNotification Я пытаюсь позвонить animate_glow но мои анимации не перезагружаются / предотвращаются. Журналы показывают, что слушатель уведомления вызывается и что UIView.areAnimationsEnabled возвращается true, Я также попытался удалить представление, на которое ссылается @swipe_glow от суперпредставления и создания нового и вызова animate_glow Это также не влияет на фактическую анимацию (хотя новый UIView может быть создан без проблем).

Кто-нибудь может объяснить это?

1 ответ

Решение

Решение, которое я нашел, на случай, если кто-то еще найдет эту проблему:

UIViewAnimationOptionRepeat | UIViewAnimationOptionAutoreverse |

Эти строки, по-видимому, и стали причиной проблемы, так как при возврате анимации из фона анимации устанавливались в конечную точку (GLOW SCALE). Затем система попыталась перезапустить анимацию, но не обнаружила изменений для анимации.

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

Или измените блоки анимации на анимированные и обратные методы, которые вызывают друг друга в своих completion: блоки.

Надеюсь, это поможет кому-то!

Другие вопросы по тегам