1. ホーム
  2. ios

[解決済み] UIVisualEffectViewやUIBlurEffectをフェードイン、フェードアウトさせるには?

2023-02-11 10:24:55

質問

UIBlurEffectを持つUIVisualEffectsViewをフェードイン、フェードアウトさせたいのですが、可能でしょうか?

var blurEffectView = UIVisualEffectView()
blurEffectView = UIVisualEffectView(effect: UIBlurEffect(style: .dark))

で呼び出される関数の中で、通常のアニメーションを使用しています。 UIButton でフェードインさせ、フェードアウトするときも同じように .alpha = 0 を使用します。 hidden = true :

blurEffectView.hidden = false
UIView.animate(withDuration: 1, delay: 0, options: .curveEaseOut) {
    self.blurEffectView.alpha = 1
}

さて、両方向にフェードするのはうまくいくのですが、フェードするときにエラーが発生します。 アウト :

<UIVisualEffectView 0x7fdf5bcb6e80> は、その不透明度をアニメーションさせるように要求されています。これにより、不透明度が 1 に戻るまで、効果が壊れているように見えます。

質問

をうまくフェードアウトさせるにはどうしたらよいでしょうか? UIVisualEffectView でフェードイン/アウトさせるには 壊れる で、フェードアウトするのですか?

ノート

  • を配置しようとしたのですが UIVisualEffectView の中に UIView に変換してフェードアウトさせますが、うまくいきません。

どのように解決するには?

iOS9の新機能だと思うのですが、エフェクトを設定する際に UIVisualEffectView の効果をアニメーションブロックの中で設定できるようになりました。

let overlay = UIVisualEffectView()
// Put it somewhere, give it a frame...
UIView.animate(withDuration: 0.5) {
    overlay.effect = UIBlurEffect(style: .light)
}

に設定します。 nil を削除してください。

非常に重要 - シミュレータでこれをテストする場合、これが動作するように、シミュレータのグラフィックス品質のオーバーライドを高品質に設定することを確認してください。