在模态呈现的视图控制器中创建闪烁的UIImageView

时间:2019-02-19 06:11:52

标签: ios swift uiview uiviewcontroller modalviewcontroller

我想创建一个闪烁的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
    }

} 

有什么办法解决这个问题吗?谢谢。

0 个答案:

没有答案