1
我试图重新在斯威夫特这样的按钮: 斯威夫特 - UI按钮阴影渐变
我已经能够从草图使用帮助从这里准确地创建按钮内的梯度: Answered Question
现在我试图重新创建按钮背后的发光效果。我想在它后面创建一个子视图,并使用高斯模糊滤镜来绘制它。现在我陷入如何实现这一点,并没有找到一个好的解决方案。正常的CALayer阴影不适用于渐变,并且我迷路了。任何帮助表示赞赏
我试图重新在斯威夫特这样的按钮: 斯威夫特 - UI按钮阴影渐变
我已经能够从草图使用帮助从这里准确地创建按钮内的梯度: Answered Question
现在我试图重新创建按钮背后的发光效果。我想在它后面创建一个子视图,并使用高斯模糊滤镜来绘制它。现在我陷入如何实现这一点,并没有找到一个好的解决方案。正常的CALayer阴影不适用于渐变,并且我迷路了。任何帮助表示赞赏
你可以像下面这样做
初始化您的梯度层从按钮的框架
let gradientLayer = CAGradientLayer.init()
gradientLayer.colors = [UIColor.red.cgColor,
UIColor.yellow.cgColor,
UIColor.green.cgColor,
UIColor.blue.cgColor]
gradientLayer.transform = CATransform3DMakeRotation(CGFloat.pi/2, 0, 0, 1)
设置适宜尺寸例如40
gradientLayer.frame = CGRect.init(
x: button.frame.minX - 40,
y: button.frame.minY - 40,
width: button.frame.width + 80,
height: button.frame.height + 80)
gradientLayer.masksToBounds = true
初始化阴影层
let shadowLayer = CALayer.init()
shadowLayer.frame = gradientLayer.bounds
shadowLayer.shadowColor = UIColor.black.cgColor
shadowLayer.shadowOpacity = 0.08
shadowLayer.shadowRadius = 20
shadowLayer.shadowPath = CGPath.init(rect: shadowLayer.bounds, transform: nil)
设置阴影层作为掩模梯度层
gradientLayer.mask = shadowLayer
插入按钮下的图层按钮的上海华梯度层
backgroungView.layer.insertSublayer(gradientLayer, below: button.layer)
太谢谢你了!这帮助我完全理解它! – surfaspen
它适合你吗? –
是的它的工作原理,但唯一的问题是,当按下按钮时,阴影层会变得更暗,并且随着用户持续按下阴影层,最终会变得与渐变层相同 – surfaspen