2017-11-22 15 views
0

で奇妙なことが、このシナリオで何が起こっているのかを把握するために私を助けん:UIViewPropertyAnimatorアプリケーションのライフサイクル

イマジンあなたはあなたがviewDidLoad()

@IBOutlet weak var blurView: UIVisualEffectView! 
var animator: UIViewPropertyAnimator? 

次のプロパティを持つビューコントローラを持っています

animator = UIViewPropertyAnimator(
     duration: 1, 
     curve: .easeOut, 
     animations: { 
      self.blurView.effect = UIBlurEffect(style: .light) 
     }) 
    animator?.fractionComplete = 0 

作業中のぼかし効果を確認するには、その背後に何かを置く必要があります(例:UIImageView)。

@IBAction private func sliderDidChange(_ sender: UISlider) { 
    animator?.fractionComplete = CGFloat(sender.value) 
} 

あなたがバックグラウンドでアプリを入れて戻ってくるしばらくプレイした後: また、アニメーションを再生するUISliderを持っています。 何が見えますか? 何らかの理由で、バックグラウンドでアニメーションが開始し、アニメーションが最終状態に戻ったときに開始されます。 しかし、私はこの動作がUIVisualEffectViewに関連していることに気付きました。 アニメーターのその他のプロパティー(たとえばopacityまたはtransform)を変更した場合、アニメーターは期待どおりに機能します(アプリがバックグラウンドになると何も変わりません)。

私は何かが間違っていたか、それともUIKitバグですか?

+0

私のソリューションはあなたのために機能しましたか? – nathan

答えて

0

溶液(例えばviewWillAppearのように)アプリケーションの再開は、自分の所望の値にアニメーションの現在の状態を設定するたび

説明

あなたはあなたの質問で述べたように、これはUIViewPropertyAnimatorであるよりも、UIVisualEffectViewの問題の詳細です。対話的UIVisualEffectViewのぼかしをアニメーション化する

、別の解決策は、設定によって、そのspeed0にするレイヤのアニメーションを一時停止することであり、層のtimeOffsetを変更します。これは、アプリケーションがバックグラウンドから復帰したときに、適切なtimeOffsetに復元されないという副作用があるためです。私はここで何か類似点が起こっていると思う。

関連する問題