在操场上的渐变不同于模拟器

时间:2015-02-10 05:59:42

标签: ios swift uiview cagradientlayer

我尝试使用playground创建一个gradiant,然后将其变成uiview的子类,以便在我的代码库中使用它。

游乐场代码是这样的:

let view = UIView(frame: CGRect(x: 0, y: 0, width: 640, height: 41
    ))

let gradient: CAGradientLayer = CAGradientLayer(layer: view.layer)
gradient.frame = view.frame

let lightColor = UIColor(red: 157/256, green: 157/256, blue: 154/256, alpha: 1)
let darkColor = UIColor(red: 108/256, green: 104/256, blue: 104/256, alpha: 1)

gradient.colors = [lightColor.CGColor, darkColor.CGColor]
gradient.locations = [0.6 , 0.4]
gradient.startPoint = CGPoint(x: 1, y: 0.55)
gradient.endPoint = CGPoint(x: 0, y: 0.45)
view.layer.insertSublayer(gradient, atIndex: 0)
view //displayed 

并显示如下:

我尝试使用以下代码将其添加到我的代码库中:

class GradiantView : UIView {
    override var frame: CGRect {
        didSet {
            let gradient: CAGradientLayer = CAGradientLayer(layer: layer)
            gradient.frame = bounds

            let lightColor = UIColor(red: 157/256, green: 157/256, blue: 154/256, alpha: 1)
            let darkColor = UIColor(red: 108/256, green: 104/256, blue: 104/256, alpha: 1)

            gradient.colors = [lightColor.CGColor, darkColor.CGColor]
            gradient.locations = [0.6 , 0.4]
            gradient.startPoint = CGPoint(x: 1, y: 0.55)
            gradient.endPoint = CGPoint(x: 0, y: 0.45)
            layer.insertSublayer(gradient, atIndex: 0)
        }
    }
}

然而,结果是这样的:(没有应用渐变)

发生了什么以及如何解决?

1 个答案:

答案 0 :(得分:0)

我倒置了位置,似乎工作。 我欢迎任何有关模拟器和游乐场之间差异的解释。

      gradientLayer.locations = [0.4 , 0.6]