sakiwei / rebound-swift

Spring dynamics in Swift

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Rebound Swift

Version Carthage compatible

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)
  }
  
}

About

Spring dynamics in Swift

License:Other


Languages

Language:Swift 100.0%