Created
April 8, 2017 11:27
-
-
Save helloworldsmart/b835f41db42cdb1f35f0b3bc1771effe to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| 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