我正在使用以下内容创建一个在IB中可见的渐变视图:
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中获得的是纯黑色视图,而不是具有双色渐变的视图,如下所示:
答案 0 :(得分:0)
解决了它。它们需要是cgColors,但XCode并没有给你一个错误来表明这一点。
[firstColor.cgColor, secondColor.cgColor]
以上解决了这个问题。
答案 1 :(得分:0)
效果很好,但是;
self.gradientLayer.frame = self.frame
应该是
self.gradientLayer.frame = self.bounds
或者您可以获得一些非常奇怪的绘制偏移,具体取决于视图在父级中的位置