2016-08-31 4 views
6

現在、UIVisualEffectViewを使用して画像にぼかしを適用しています。iOSでドラッグしている間、UIVisualEffectViewのぼかしがどのように変更されるのですか?

私はUIScrollViewを持っています。私がscrollViewをプルダウンすると、私の "scrollViewDidScroll"メソッドで、私はUIVisualEffectViewのアルファを変更しています。これの現在の動作は、ビュー内をドラッグするとぼかし半径がスムーズに変化することです。

問題は、もちろん、私はこれをやっていないと思います。 UIVisualEffectViewのアルファ値の変更に関する警告を取得します。私は、人々は、アニメーションを使用してぼかしの円滑な移行を行うことを言うのを見てきました

が、ここで次のように:How to fade a UIVisualEffectView and/or UIBlurEffect in and out?

しかし、私は私が中にこれを行うことができます何かを見ていない、汎を言いますジェスチャーなど。私は、私は時間のある量、すべての良いとアニメーションを設定する場合は、私は意味します。しかし、ドラッグ中にこれをやっている?

答えて

7

方法があります:)

あなたが気づいてきたように、あなたは私たちがアニメーションを追加して、レイヤーのアニメーションを一時停止した場合、我々はの進行を制御することができますので、UIBlurEffectStyleDarkのような効果にnil効果からアニメーション化することができますレイヤーの調整による効果timeOffset

- (void) setupBlur { 
    // Setup the blur to start with no effect 
    self.blurredEffectView = [[UIVisualEffectView alloc] initWithEffect:nil]; 

    // Add animation to desired blur effect 
    [UIView animateWithDuration:1.0 animations:^{ 
     [self.blurredEffectView setEffect:[UIBlurEffect effectWithStyle:UIBlurEffectStyleDark]]; 
    }]; 

    // Pause layer animations 
    self.blurredEffectView.layer.speed = 0; 
} 

0.0及び1.0(アニメーション時間)の間のボケの調整:

- (void) adjustBlur:(CGFloat)blurIntensity { 
    self.blurredEffectView.layer.timeOffset = blurIntensity; 
} 
  • 注:これはUIBlurEffectアニメーションがサポートされていないIOSの8で動作しません。
+1

ありがとうございます。これはちょうど私が探していたものでした! –

+1

:D追加の注釈: 'UIVisualEffectView'サブビューがビュー階層に追加されるまでアニメーションが動作しないように見えることがあります。私は通常、 'viewDidLoad'でぼかしをインスタンス化して追加し、後で' viewDidAppear: 'でアニメーションを追加します。 – Warpling

+0

私はSwiftでも同じ方法を使用しています。しかし、バグがあります。アプリがバックグラウンドに移動して戻ってきたとき、アニメーションは自動的に終了状態に達し、アニメーションはそれ以上ありません。あなたたちはその問題を巡って来ましたか?あなたはそれを回避する方法を知っていますか? – suntime

関連する問題