我想创建一个闪烁的UIView
,它看起来像一个带有动画的Facebook占位符。
我使用图像创建占位符,而不是在其中添加一些动画的渐变层。
@IBOutlet weak var shimmeringView: UIImageView!
我创建了UIView
的扩展名,然后在ViewDidLoad
中称呼它
shimmeringView.startShimmering()
下面的代码在标准视图控制器中运行,但是如果我在以模态显示的视图控制器中使用它,它将无法正常工作。
extension UIView {
func startShimmering() {
let light = UIColor.white.cgColor
let alpha = UIColor.white.withAlphaComponent(0.6).cgColor
let gradient = CAGradientLayer()
gradient.colors = [alpha, light, alpha]
gradient.frame = CGRect(x: -self.bounds.size.width, y: 0, width: 3 * self.bounds.size.width, height: self.bounds.size.height)
gradient.startPoint = CGPoint(x: 0.0, y: 0.5)
gradient.endPoint = CGPoint(x: 1.0, y: 0.8)
gradient.locations = [0.4, 0.5, 0.6]
self.layer.mask = gradient
let animation = CABasicAnimation(keyPath: "locations")
animation.fromValue = [0.0, 0.1, 0.2]
animation.toValue = [0.8, 0.9, 1.0]
animation.duration = 1.5
animation.repeatCount = HUGE
gradient.add(animation, forKey: "shimmer")
}
func stopShimmering(){
self.layer.mask = nil
}
}
有什么办法解决这个问题吗?谢谢。