UIScrollView上的渐变蒙版更新缓慢

Rog*_*are 3 gradient mask uiscrollview swift

我有一个UIScrollView包含非常广泛的UIView子类的子类,并且我希望淡出可见内容的边缘。这是UIScrollView子类中的内容:

private var gradientMask = CAGradientLayer()
override func layoutSubviews() {
    super.layoutSubviews()

    gradientMask.frame = self.bounds
    gradientMask.colors = [UIColor(white: 0.0, alpha: 0.18).CGColor,
        UIColor(white: 0.0, alpha: 0.95).CGColor,
        UIColor(white: 0.0, alpha: 0.95).CGColor,
        UIColor(white: 0.0, alpha: 0.0).CGColor
    ]

    let fadeStart:CGFloat = 50.0 / self.bounds.width
    gradientMask.startPoint = CGPoint(x:0, y:0.5)
    gradientMask.endPoint = CGPoint(x:1, y:0.5)
    let fadeEnd = (self.bounds.width - 40.0) / self.bounds.width
    gradientMask.locations = [fadeStart,fadeStart+0.1,fadeEnd,1.0]

    self.layer.mask = gradientMask
}   
Run Code Online (Sandbox Code Playgroud)

它确实有效,但是有一个滞后。滚动后,渐变会随着内容滚动一会儿,然后恢复到预期位置。如何确保滚动视图的边缘淡出-滚动时渐变不移动?

Rog*_*are 5

解决方法是将UIScrollView子类嵌入到已应用渐变的视图中。而已!