Skip to content

Instantly share code, notes, and snippets.

@helloworldsmart
Created April 8, 2017 11:27
Show Gist options
  • Select an option

  • Save helloworldsmart/b835f41db42cdb1f35f0b3bc1771effe to your computer and use it in GitHub Desktop.

Select an option

Save helloworldsmart/b835f41db42cdb1f35f0b3bc1771effe to your computer and use it in GitHub Desktop.
import UIKit
class ViewController: UIViewController {
//MART: 1. @IBOutlet weak var faceView: FaceView!
//MART: 9.
/*
IBOutletweak var faceView: FaceView! {
didSet {
updateUI()
}
}
*/
@IBOutlet weak var faceView: FaceView! {
didSet {
let handler = #selector(FaceView.changeScale(byReactingTo:))
let pinchRecognizer = UIPinchGestureRecognizer(target: faceView, action: handler)
faceView.addGestureRecognizer(pinchRecognizer)
let tapRecognizer = UITapGestureRecognizer(target: self, action: #selector(toggleEyes(byReactingTo:)))
tapRecognizer.numberOfTapsRequired = 1
faceView.addGestureRecognizer(tapRecognizer)
let swipeUpRecogizer = UISwipeGestureRecognizer(target: self, action: #selector(increaseHappiness))
swipeUpRecogizer.direction = .up
faceView.addGestureRecognizer(swipeUpRecogizer)
let swipeDownRecogizer = UISwipeGestureRecognizer(target: self, action: #selector(decreaseHappiness))
swipeDownRecogizer.direction = .down
faceView.addGestureRecognizer(swipeDownRecogizer)
updateUI()
}
}
func increaseHappiness()
{
expression = expression.happier
}
func decreaseHappiness()
{
expression = expression.sadder
}
func toggleEyes(byReactingTo tapRecognizer: UIPinchGestureRecognizer) {
if tapRecognizer.state == .ended {
let eyes: FacialExpression.Eyes = (expression.eyes == .closed) ? .open : .closed
expression = FacialExpression(eyes: eyes, mouth: expression.mouth)
}
}
//MART: 3.var expression = FacialExpression(eyes:.open, mouth:.grin)
//MART: 8
var expression = FacialExpression(eyes:.open, mouth:.grin) {
didSet {
updateUI()
}
}
//MART: 4.
//option chain
private func updateUI() {
switch expression.eyes {
case .open:
faceView.eyesOpen = true
case .closed:
faceView.eyesOpen = false
case .squinting:
faceView.eyesOpen = false
}
//MART: 6.
//MART: 7. ??
faceView.mouthCurvature = mouthCurvatures[expression.mouth] ?? 0.0
}
//MART: 5.
private let mouthCurvatures = [FacialExpression.Mouth.grin:0.5, .frown:-1.0, .smile:1.0, .neutral: 0.0, .smirk:-0.5]
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.
//let
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment