2016-11-14 2 views
1

Swiftでぼかし効果を持つグラデーションビューを追加するにはどうすればよいですか?グラデーションレイヤー(CAGradientLayer)を非常に簡単にビューに追加できます。また、ぼかしビュー(UIVisualEffectView)を別途追加することもできます。ぼかしビューにグラデーションエフェクトを適用する

両方を組み合わせてぼかしビューを作成するにはどうすればよいですか?

似効果の例:

Example of what I'm looking for

+0

この効果はありましたか? –

答えて

1

あなたがCoreImageを知っている場合、あなたは簡単にCICategoryBlurから1とカテゴリCICategoryGradientから1、2つのフィルタを一緒に連鎖することができます。

ここでは、使用例を示します。チェーンに、ちょうど次の入力として、第一のフィルタの出力を取る:

func convertImageToBW(image:UIImage) -> UIImage { 

    let filter = CIFilter(name: "CIPhotoEffectMono") 

    // convert UIImage to CIImage and set as input 

    let ciInput = CIImage(image: image) 
    filter?.setValue(ciInput, forKey: "inputImage") 

    // get output CIImage, render as CGImage first to retain proper UIImage scale 

    let ciOutput = filter?.outputImage 
    let ciContext = CIContext() 
    let cgImage = ciContext.createCGImage(ciOutput!, from: (ciOutput?.extent)!) 

    return UIImage(cgImage: cgImage!) 
} 

上記のリンクは、Appleのドキュメントにあります。

+0

グラデーション全体でぼかし量を連続的に変えたい場合は、[CIMaskedVariableBlur](https://developer.apple.com/library/content/documentation/GraphicsImaging/Reference/CoreImageFilterReference/index.html)を使用します。 #// apple_ref/doc/filter/ci/CIMaskedVariableBlur)を使用して、マスクと同じグラデーションを使用します。 – rickster

+0

@dfd - あなたの答えをありがとう! UIImageViewの上にあるこのブラー/グラデーションエフェクトをビューに持たせることができるUIViewにフィッティングを適用することが可能かどうかを知っていますか?私はそれの下の画像を交換することができるように、また、このぼかし/グラデーションフィルタスライドをアニメーションを介して出入りすることができますか? – Ranknoodle

+0

短い答え - はい。長い答え? CIImage(CIフィルタのoutputImage)は、画像の「レシピ」と考えるのが最適です。それをCGコンテキストに入れ、CALayerまたはサブクラスに書き込んでください。そして、それを任意のUIViewまたはサブクラスの一部にすることができます。次回のアップグレードでは、コントロールを「メイン」ビューからスライダ「コントロールボード」(スライダやその他のコントロールを備えたキーボードと思う)に移動します。これは、投影された画像の部分にぼかしの背景を適用します。それは、より長い次元に応じて、ボトムまたは右にアニメートおよびオリエンテーションを行う。 – dfd

関連する問題