使用UIScrollView的渐变背景颜色

时间:2018-05-18 03:10:10

标签: ios swift uiscrollview uiscrollviewdelegate cagradientlayer

我知道这个问题可能看似重复,但是大多数答案都忽略了在视图中滚动的事实。

当我滚动渐变颜色时,整个滚动保持不变,而不是完全用于背景。例如,视图的高度是1500,并且我看的当前视图是(示例)450,然后在该450中,渐变在整个其他1050中是恒定的而不是在滚动时它应该变得更暗和更暗(到另一种颜色)。这是一个更好理解的图像

https://ibb.co/euKcLd

https://ibb.co/bHNxLd

https://ibb.co/eZgA6J

这是我正在使用的代码:

func setGradientColour() {
        let colorTop =  UIColor(red: 255.0/255.0, green: 149.0/255.0, blue: 0.0/255.0, alpha: 1.0).cgColor
        let colorBottom = UIColor(red: 255.0/255.0, green: 0/255.0, blue: 0/255.0, alpha: 1.0).cgColor
        let gradientLayer = CAGradientLayer()
        gradientLayer.colors = [colorTop, colorBottom]
        gradientLayer.locations = [0.0, 1.0]
        gradientLayer.frame = self.view.bounds
        self.view.layer.insertSublayer(gradientLayer, at: 0)
    }

在viewDidLoad方法中调用了哪个。

1 个答案:

答案 0 :(得分:0)

原来代码错误,必须更改为:

func setGradientColour() {
    let colorTop =  UIColor(red: 255.0/255.0, green: 149.0/255.0, blue: 0.0/255.0, alpha: 1.0).cgColor
    let colorBottom = UIColor(red: 255.0/255.0, green: 0/255.0, blue: 0/255.0, alpha: 1.0).cgColor
    let gradientLayer = CAGradientLayer()
    gradientLayer.colors = [colorTop, colorBottom]
    gradientLayer.locations = [0.0, 1.0]
    gradientLayer.frame = scrollViewTest.bounds
    scrollViewTest.layer.insertSublayer(gradientLayer, at: 0)
}

其中scrollViewTest是scrollView的出口。错误是我正在调用普通视图层而不是滚动视图,这减少了视图的长度。