Создайте мерцающий UIImageView в модально представленном контроллере представления - PullRequest
0 голосов
/ 19 февраля 2019

Я хочу создать мерцающий 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
    }

} 

Есть идеи как это исправить?Спасибо.

...