CAGradientLayer不会出现(Swift 3)

时间:2017-06-20 13:34:16

标签: uiview swift3 gradient

我正在制作一个天气应用程序并显示当天的最高和最低温度,我使用了UIView的角落我已经使用.layer.cornerRadius进行了舍入。现在我想添加一个具有不同颜色(表示温度)的渐变图层,但渐变层并不会出现。这是我的viewDidLoad(),视图名称是currentMinMaxTemperatureView:

let gradientLayer = CAGradientLayer()
    gradientLayer.frame = currentMinMaxTemperatureView.bounds
    gradientLayer.cornerRadius = currentMinMaxTemperatureView.cornerRadius
    gradientLayer.colors = [UIColor.blue, UIColor.yellow, UIColor.red]
    currentMinMaxTemperatureView.layer.addSublayer(gradientLayer)

为什么不出现?运行时,我的视图如下所示:

enter image description here

2 个答案:

答案 0 :(得分:1)

尝试以下

gradientLayer.colors = [UIColor.blue.cgColour, UIColor.yellow.cgColour, UIColor.red.cgColour]

答案 1 :(得分:1)

您的代码有两个问题:

首先,如@archLucifer所述,CAGradientLayer期望CGColor,而不是UIColor

像这样简单地转换颜色:

[UIColor.blue.cgColor, UIColor.yellow.cgColor, UIColor.red.cgColor]

第二,您要确保在将currentMinMaxTemperatureView添加到超级视图后添加。否则,其bounds将是nil

稍后在UIViewController生命周期中尝试添加渐变,例如ViewDidLayoutSubviews()