Rebound Swift
Swift port of https://github.com/facebook/rebound-js
Usage
import UIKit
import Rebound
class ViewController: UIViewController {
var springSystem: SpringSystem!
var spring: Spring!
let square = UIControl(frame: CGRect(x: 0, y: 0, width: 100.0, height: 100.0))
override func viewDidLoad() {
super.viewDidLoad()
springSystem = SpringSystem()
spring = springSystem.createSpring(tension: 40.0, friction: 3.0)
spring.addListener(update: { [weak self] spring in
let scale = MathUtil.mapValueInRange(
CGFloat(spring.currentValue), fromLow: 0, fromHigh: 1.0, toLow: 1.0, toHigh: 0.5
)
self?.square.transform = CGAffineTransform(scaleX: scale, y: scale)
})
square.backgroundColor = UIColor(red: 0/255.0, green: 122.0/255.0, blue: 255.0/255.0, alpha: 1.0)
square.center = CGPoint(x: view.bounds.midX, y: view.bounds.midY)
square.addTarget(self, action: #selector(squareDown), forControlEvents: .touchDown)
square.addTarget(self, action: #selector(squareUp), forControlEvents: .touchUpInside)
square.addTarget(self, action: #selector(squareUp), forControlEvents: .touchUpOutside)
view.addSubview(square)
}
@objc func squareDown() {
spring.setEndValue(1.0)
}
@objc func squareUp() {
spring.setEndValue(0)
}
}