0

我正在使用以下内容创建在 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 中得到的是纯黑色视图,而不是具有两种颜色渐变的视图,如下所示:

在此处输入图像描述

4

2 回答 2

1

解决了。它们必须是 cgColors,但 XCode 不会给您一个错误来表明这一点。

[firstColor.cgColor, secondColor.cgColor]

以上解决了这个问题。

于 2017-02-22T19:07:44.220 回答
0

效果很好,但是;

self.gradientLayer.frame = self.frame

应该

self.gradientLayer.frame = self.bounds

或者您可以获得一些非常奇怪的绘制偏移量,具体取决于视图在父级中的位置

于 2017-06-16T16:21:20.903 回答