Your SlideShare is downloading. ×
Upcoming SlideShare
Loading in...5

Thanks for flagging this SlideShare!

Oops! An error has occurred.

Saving this for later? Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime – even offline.
Text the download link to your phone
Standard text messaging rates apply



Published on

My talk about CoconutKit 2.0, held at Cocoheads Switzerland in December 2012

My talk about CoconutKit 2.0, held at Cocoheads Switzerland in December 2012

Published in: Technology
1 Like
  • Be the first to comment

No Downloads
Total Views
On Slideshare
From Embeds
Number of Embeds
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

No notes for slide


  • 1. CoconutKitSamuel Défago, le studioCocoaheads — December 2012
  • 2. Who am I?• iOS developer at le studio (• Mail: defagos (at) gmail (dot) com• Twitter: @defagos• Blog: http://subjective-objective-• Open-source:
  • 3. What is CoconutKit?• Open source project• A library, not a framework• Collection of useful and robust components• Supports ARC and non-ARC projects• Compatible with iOS 4, 5 and 6
  • 4. Brief history• July 2010 — Birth• August 2011 — First public release 1.0• October 2011 — Softshake event• November 2012 — Version 2.0
  • 5. My goals• Eliminate cumbersome tasks• Provide robust components• Fill system framework gaps• Keep components easy to use ...• ... and documented• Have fun!
  • 6. Why you should use it?• Spend more time on your application• Spend less time on debugging• Create more robust applications• Create beautiful applications more easily• Write better code
  • 7. Links• Official github page ( defagos/CoconutKit)• Wiki ( CoconutKit/wiki)• Binaries ( CoconutKit/downloads)
  • 8. Adding to a project• Easy to integrate (~ 2 minutes)• Easy to update• Two methods • Binaries (.staticframework) • Cocoapods ( CocoaPods/CocoaPods)
  • 9. Components (1)• View controller containers & API• Animations• Dynamic localization• Core Data extensions• Controls (label, cursor, text field, etc.)
  • 10. Components (2)• Easy view and cell instantiation from nibs• Lightweight logger• And more!
  • 11. Containers• High-quality containers • Composition (placeholder VC) • Navigation (stack controller)• Custom CA transitions• Storyboard support• Compatible with UIKit containers
  • 12. Placeholder• Embed one or several VCs into another Example 1 Example 2 -setInsetViewController:atIndex:
  • 13. Stack • Push / pop view controllers -pushViewController:withTransitionClass:animated: -popViewController:animated:-insertViewController:atIndex:withTransitionClass:animated: -removeViewControllerAtIndex:animated:
  • 14. Stack
  • 15. Autorotation• Use iOS 6 methods for all HLSViewController subclasses• autorotationMode container property • Available for CoconutKit containers... • ... and for UIKit ones (no more subclassing)
  • 16. Why CoconutKit containers?• Easily change interface and transitions• Cleanly separate your code• Manage complex VC hierarchies easily• Circumvent UIKit limitations (e.g. modal, 3D flip animations)• API to create your own containers
  • 17. Animations• Create in a declarative way• Combine UIView and CA animations• Pause and resume, cancel• Set start time and delay, loop, repeat count• Play with duration / instantaneously• Correct behavior when app sent to the background
  • 18. [self.listAnimation playAnimated:YES];[self.listAnimation reverseAnimation] playAnimated:YES];
  • 19. Localization• Change localization at runtime• nib localization without outlets
  • 20. - (void)localize { [super localize]; // View controller localization code }[NSBundle setLocalization:@”en”] [NSBundle setLocalization:@”ar”]
  • 21. LS/Country of residence ULS/Country of residence LLS/Country of residence CLS/Country of residenceStrings file Pays de résidence PAYS DE RESIDENCE pays de résidence Pays De Résidence
  • 22. Core Data extensions• Managed object context (MOC) stack• Validation done right• Text field bindings
  • 23. MOC stack context-free methods
  • 24. Validation• Validations written once• Called separately or globally• Error-chaining done right
  • 25. Text field bindings• Bind text field to underlying model object field• Optional formatter
  • 26. Label• Vertical alignment• Font size adjustment even for nbrLines >= 2
  • 27. Cursor
  • 28. And more!• Search bar• Alert view done right• Slideshows (cross-fade, Ken Burns, ribbon)• Text field moving to avoid being hidden by the keyboard
  • 29. And more!
  • 30. Thanks for your attention!
  • 31. Questions?