TIPullToRefresh/Example/RMRPullToRefresh/PerekrestokView.swift

53 lines
1.5 KiB
Swift

//
// PerekrestokView.swift
// RMRPullToRefresh
//
// Created by Merkulov Ilya on 24.03.16.
// Copyright © 2016 Merkulov Ilya. All rights reserved.
//
import UIKit
import RMRPullToRefresh
class PerekrestokView: RMRPullToRefreshView {
@IBOutlet weak var logoImageView: UIImageView!
var fromValue: CGFloat = 0.0
class func XIB_VIEW() -> PerekrestokView? {
let subviewArray = NSBundle.mainBundle().loadNibNamed("PerekrestokView", owner: self, options: nil)
return subviewArray.first as? PerekrestokView
}
// MARK: - Private
func angle(progress: CGFloat) -> CGFloat {
return -CGFloat(M_PI)/progress
}
// MARK: - RMRPullToRefreshViewProtocol
override func didChangeDraggingProgress(progress: CGFloat) {
logoImageView.transform = CGAffineTransformMakeRotation(angle(progress));
}
override func prepareForLoadingAnimation(startProgress: CGFloat) {
fromValue = angle(startProgress)
}
override func beginLoadingAnimation() {
let rotationAnimation = CABasicAnimation(keyPath: "transform.rotation.z")
rotationAnimation.fromValue = fromValue
rotationAnimation.byValue = 2*M_PI
rotationAnimation.duration = 0.9
rotationAnimation.repeatCount = HUGE
self.logoImageView.layer.addAnimation(rotationAnimation, forKey: "transformAnimation")
}
override func didEndLoadingAnimation(hidden: Bool) {
self.logoImageView.layer.removeAnimationForKey("transformAnimation")
}
}