     }
     
     open func startAnimating() {
+        
+        guard let _ = _image else {
+            _imageView.startAnimating()
+            return
+        }
+        
         guard !isAnimating else {
             return
         }

    }
    
    open func stopAnimating() {
        guard isAnimating else {
            return
        }

    private var displayingFrameStarted: CFTimeInterval?
    // The current displaying frame index in its decoder.
    private var displayingFrameIndex = 0
    // Returns the next frame to be rendered. If the current displaying frame is not the last, return index of the next
    // frame. If the current displaying frame is the last one, returns 0 regardless whether there is another play or not.
    private var nextFrameIndex: Int {
        guard let image = _image else {
            return 0
