2017-07-21 5 views
2

私はぼやけたUIVisualEffectViewを持っており、PNG UIImageでマスクしたいと思います。PNGマスクでぼかしUIVisualEffectViewをクリップするにはどうすればよいですか?

私は今のところこのコードを持っていますが、マスクを適用すると、ビューはブラー効果をそれ以上適用しません。

let maskLayer = CAShapeLayer() 
maskLayer.contents = UIImage(named: "botnavbarmask")?.cgImage 

let maskView = UIView(frame: self.view.frame) 
maskView.backgroundColor = UIColor.black 
maskView.layer.mask = maskLayer 

blurBottom.mask = maskView 

ぼかし効果にマスクを適用することは可能ですか?

何か助けていただければ幸いです。コードの行以下

答えて

0

使用、

let maskLayer = CAShapeLayer() 
maskLayer.contents = UIImage(named: "icono-menu")?.cgImage 

maskLayer.frame = self.blurBottom.bounds 
self.blurBottom.layer.masksToBounds = true 
self.blurBottom.layer.mask = maskLayer 

希望これは

+0

は動作しません。ビューはマスクされますが、ぼかし効果は適用されません。 –

+0

私は "バグ"を示すために最小限の例を用意しようとします。 –

+0

@CarloVespa例を投稿してください。もう一度お手伝いします。 –

0

UIVisualEffectViewはちょっとグラグラであるのに役立ちます。エフェクトビューのスナップショットを撮ってからマスクを適用するとどうなりますか?

func imageFromView(_ view: UIView) -> UIImage { 

    UIGraphicsBeginImageContextWithOptions(view.frame.size, false, 0.0) 
    view.drawHierarchy(in: view.frame, afterScreenUpdates: true) 
    let snapshotImage: UIImage = UIGraphicsGetImageFromCurrentImageContext()! 
    UIGraphicsEndImageContext() 
    return snapshotImage 
} 

私は半分エフェクトビューが表示されないことを期待しますが、試してみる価値があるかもしれません。

0

ここにある:

let blurView = UIVisualEffectView(effect: UIBlurEffect(style: .light)) 
let logoView = UIImageView(image: #imageLiteral(resourceName: "logo")) 
blurView.mask = logoView 
関連する問題