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