Upgrade to Pro — share decks privately, control downloads, hide ads and more …

iOS Views & Animations: Learning by stealing

October 11, 2018

iOS Views & Animations: Learning by stealing

Making your apps look and feel fantastic is a big part of creating top-notch user experience. Since we know that great artists steal, one of the best ways to improve your skills is to recreate things you love in other apps. In this talk, we'll do exactly that. We'll take two or three great pieces of UI and work out how to recreate them. This will give us a great opportunity to spelunk across multiple frameworks, such as Core Animation, and to discover techniques we can use to recreate some great UI flourishes. By the end of this talk you'll have learnt at least two things, one of which will be of some use to you.


October 11, 2018

More Decks by sammyd

Other Decks in Programming


  1. Views & Animations: Learning by Stealing github.com/sammyd/MobileUnplugged2018_UI @iwantmyrealname

  2. why steal? @iwantmyrealname

  3. where to start? @iwantmyrealname

  4. @iwantmyrealname

  5. @iwantmyrealname

  6. @iwantmyrealname

  7. @iwantmyrealname

  8. Views -vs- layers CAShapeLayer UIBezierPath Layer shadows @iwantmyrealname

  9. #code @iwantmyrealname

  10. @iwantmyrealname

  11. @iwantmyrealname

  12. CAShapeLayer CAGradientLayer Layer masks @iwantmyrealname

  13. PaintCode paintcodeapp.com @iwantmyrealname

  14. KiteApp kiteapp.co @iwantmyrealname

  15. Lottie airbnb.io/lottie @iwantmyrealname

  16. #code @iwantmyrealname

  17. @iwantmyrealname

  18. @iwantmyrealname

  19. @iwantmyrealname

  20. @iwantmyrealname

  21. @iwantmyrealname

  22. CAGradientLayer Layer Masks CAAnimation @iwantmyrealname

  23. #code @iwantmyrealname

  24. @iwantmyrealname

  25. @iwantmyrealname

  26. @iwantmyrealname

  27. @iwantmyrealname

  28. CAAnimation Layer masks CAShapeLayer @iwantmyrealname

  29. #code @iwantmyrealname

  30. so what? @iwantmyrealname

  31. learning @iwantmyrealname

  32. practice @iwantmyrealname

  33. mistakes @iwantmyrealname

  34. @iwantmyrealname

  35. Custom modal Presentation controller Transitioning delegate Property animator @iwantmyrealname

  36. interactive map? @iwantmyrealname

  37. override func hitTest(_ point: CGPoint, with event: UIEvent?) -> UIView?

    { let hit = super.hitTest(point, with: event) if hit != self { return hit } for passthroughView in passthroughViews { let hit = passthroughView.hitTest( convert(point, to: passthroughView), with: event) if hit != .none { return hit } } return .none } @iwantmyrealname
  38. incorrect model @iwantmyrealname

  39. maybe contained view controllers @iwantmyrealname

  40. doesn't matter @iwantmyrealname

  41. learning @iwantmyrealname

  42. practice @iwantmyrealname

  43. mistakes @iwantmyrealname

  44. @iwantmyrealname

  45. @iwantmyrealname ~ github.com/sammyd /MobileUnplugged2018_UI @iwantmyrealname