2016-12-12 9 views
3

В настоящее время у меня есть CALayer применяется к UIImageView так:Swift 3: Как создать размытые боковые края/углы UIImageView?

let l: CALayer = imageView.layer 
l.masksToBounds = true 
l.cornerRadius = 20.0 

enter image description here

Я хотел бы, чтобы достичь следующего эффекта размытия, как показано ниже:

enter image description here

Я вы пробовали следующее:

let blurEffect = UIBlurEffect(style: .light) 

let visualEffectView = UIVisualEffectView(effect: blurEffect) 
imageView.addSubview(visualEffectView) 

, а также:

var visualEffectView = UIVisualEffectView(effect: UIBlurEffect(style: .light)) 

visualEffectView.frame = staffImageView.bounds 

imageView.addSubview(visualEffectView) 

Однако, как не достичь результатов, которые я хочу.

Может ли кто-нибудь помочь в этом? Это кажется довольно простым, но я просто не могу этого добиться.

UPDATE: Я пытался играть с градиентом, но не имея много удачи:

var maskLayer = CAGradientLayer() 
maskLayer.frame = cell.imageView.bounds 
let black = UIColor.white.cgColor 
let clear = UIColor(white: 1, alpha: 0).cgColor 
maskLayer.colors = [black, clear] 
maskLayer.locations = [0.0, 0.10] 
maskLayer.startPoint = CGPoint(x: 1, y: 0) 
maskLayer.endPoint = CGPoint(x: 1, y: 1) 
cell.imageView.layer.addSublayer(maskLayer) 

Результат:

enter image description here

+0

Вы пытались добавить маску к размытости так, что это влияет только на стороне? –

ответ

6
let maskLayer = CAGradientLayer() 
maskLayer.frame = yourImageView.bounds 
maskLayer.shadowRadius = 5 
maskLayer.shadowPath = CGPath(roundedRect: YourImagView.bounds.insetBy(dx: 5, dy: 5), cornerWidth: 10, cornerHeight: 10, transform: nil) 
maskLayer.shadowOpacity = 1 
maskLayer.shadowOffset = CGSize.zero 
maskLayer.shadowColor = UIColor.white.cgColor   
yourImageView.layer.mask = maskLayer 
2

Основание на Винсент Joy post,

Для Swift 3:

let maskLayer = CAGradientLayer() 
maskLayer.frame = yourImageView.bounds 
maskLayer.shadowRadius = 5 
maskLayer.shadowPath = CGPathCreateWithRoundedRect(CGRectInset(yourImageView.bounds, 5, 5), 10, 10, nil) 
maskLayer.shadowOpacity = 1; 
maskLayer.shadowOffset = CGSizeZero; 
maskLayer.shadowColor = UIColor.whiteColor().CGColor   
yourImageView.layer.mask = maskLayer; 

Для Swift 4:

let maskLayer = CAGradientLayer() 
maskLayer.frame = YourImagView.bounds 
maskLayer.shadowRadius = 5 
maskLayer.shadowPath = CGPath(roundedRect: YourImagView.bounds.insetBy(dx: 5, dy: 5), cornerWidth: 10, cornerHeight: 10, transform: nil) 
maskLayer.shadowOpacity = 1; 
maskLayer.shadowOffset = CGSize.zero; 
maskLayer.shadowColor = UIColor.white.cgColor 
YourImagView.layer.mask = maskLayer; 

 Смежные вопросы

  • Нет связанных вопросов^_^