2017-07-22 94 views
1

我試圖重新在斯威夫特這樣的按鈕: Glowing Button Effect斯威夫特 - UI按鈕陰影漸變

我已經能夠從草圖使用幫助從這裏準確地創建按鈕內的梯度: Answered Question

現在我試圖重新創建按鈕背後的發光效果。我想在它後面創建一個子視圖,並使用高斯模糊濾鏡來繪製它。現在我陷入如何實現這一點,並沒有找到一個好的解決方案。正常的CALayer陰影不適用於漸變,並且我迷路了。任何幫助表示讚賞

回答

1

你可以像下面這樣做

初始化您的梯度層從按鈕的框架

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) 
+0

太謝謝你了!這幫助我完全理解它! – surfaspen

+0

它適合你嗎? –

+0

是的它的工作原理,但唯一的問題是,當按下按鈕時,陰影層會變得更暗,並且隨着用戶持續按下陰影層,最終會變得與漸變層相同 – surfaspen