                 if self.totalGifSize < memoryLimit && !self.haveCache {
                     self.haveCache = true
                     for imageView in self.displayViews{
-                        DispatchQueue.global(qos: DispatchQoS.QoSClass.userInteractive).async{
+                        DispatchQueue.global(qos: DispatchQoS.QoSClass.userInteractive).sync{
                             imageView.updateCache()
                         }
                     }

        if self.totalGifSize > memoryLimit && self.haveCache {
            self.haveCache = false
            for imageView in self.displayViews{
                DispatchQueue.global(qos: DispatchQoS.QoSClass.userInteractive).async{
                    imageView.updateCache()
                }
            }

     This is what create the animation.
     */
    @objc func updateImageView(){
        for imageView in self.displayViews {

            DispatchQueue.main.async{
                imageView.image = imageView.currentImage
            }
            if imageView.isAnimatingGif() {
                DispatchQueue.global(qos: DispatchQoS.QoSClass.userInteractive).sync{
                    imageView.updateCurrentImage()
                }
            }

        }
    }
    
