             }
             
             return abs(offsetY / bounds.height)
+        }
+        
+        private func rotateRatio(ratio: CGFloat) {
+            let value: CGFloat
+            
+            if ratio <= 0 {
+                value = 0
+            } else if ratio >= 1 {
+                value = 1
+            } else {
+                value = ratio
+            }
+            
+            CATransaction.begin()
+            CATransaction.setDisableActions(true)
+            indicator.indicatorView.layer.transform = CATransform3DMakeRotation(CGFloat(M_PI - M_PI_4) * value, 0, 0, 1)
+            CATransaction.commit()
         }
     }
 }

                refreshing = ratio >= 1
                
                indicator.strokeRatio(ratio)
            }
        }
        

        
        CATransaction.begin()
        CATransaction.setDisableActions(true)
        pathLayer?.strokeStart = 0
        pathLayer?.strokeEnd = value
        CATransaction.commit()
