1

我用下面創建一個梯度認爲,在IB可見:使用@IBDesignable的梯度視圖

import UIKit 
import QuartzCore 

@IBDesignable 
class FAUGradientView: UIView { 

    @IBInspectable var firstColor:UIColor = UIColor.clear 
    @IBInspectable var secondColor:UIColor = UIColor.clear 
    @IBInspectable var startPoint:CGPoint = CGPoint(x: 0.0, y: 1.0) 
    @IBInspectable var endPoint:CGPoint = CGPoint(x: 1.0, y:0.0) 

    var gradientLayer:CAGradientLayer! 

    override func draw(_ rect: CGRect) { 
     super.draw(rect) 

     gradientLayer = CAGradientLayer() 
     self.gradientLayer.colors = [firstColor, secondColor] 
     self.gradientLayer.startPoint = self.startPoint 
     self.gradientLayer.endPoint = self.endPoint 
     self.gradientLayer.frame = self.frame 
     self.layer.addSublayer(self.gradientLayer) 
    } 


} 

不過,我獲得IB是純黑色視圖,而不是與視圖兩個顏色漸變,如下所示:

enter image description here

回答

0

解決它。他們需要cgColors,但XCode不會給你一個單一的錯誤來表明這一點。

[firstColor.cgColor, secondColor.cgColor] 

上面解決了這個問題。

0

工作良好,但;

self.gradientLayer.frame = self.frame 

應該

self.gradientLayer.frame = self.bounds 

,或者你可以得到一些非常奇怪的平局偏移取決於其中的觀點是在父