UIScrollView 上的渐变遮罩更新缓慢
Gradient mask on UIScrollView slow to update
我有一个 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
}
确实有效,但存在延迟。滚动后,渐变看起来会随内容滚动片刻,然后快速回到预期位置。如何确保滚动视图的边缘淡出——并且滚动时渐变不移动?
修复只是将 UIScrollView
子类嵌入到应用了渐变的视图中。就是这样!
我有一个 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
}
确实有效,但存在延迟。滚动后,渐变看起来会随内容滚动片刻,然后快速回到预期位置。如何确保滚动视图的边缘淡出——并且滚动时渐变不移动?
修复只是将 UIScrollView
子类嵌入到应用了渐变的视图中。就是这样!