Date post: | 12-May-2015 |
Category: |
Technology |
Upload: | defagos |
View: | 1,161 times |
Download: | 0 times |
CoconutKit
Samuel Défago, le studio
Cocoaheads — December 2012
Who am I?
• iOS developer at le studio (www.hortis.ch)
• Mail: defagos (at) gmail (dot) com
• Twitter: @defagos
• Blog: http://subjective-objective-c.blogspot.com/
• Open-source: https://github.com/defagos
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
Brief history
• July 2010 — Birth
• August 2011 — First public release 1.0
• October 2011 — Softshake event
• November 2012 — Version 2.0
My goals
• Eliminate cumbersome tasks
• Provide robust components
• Fill system framework gaps
• Keep components easy to use ...
• ... and documented
• Have fun!
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
Links
• Official github page (https://github.com/defagos/CoconutKit)
• Wiki (https://github.com/defagos/CoconutKit/wiki)
• Binaries (https://github.com/defagos/CoconutKit/downloads)
Adding to a project
• Easy to integrate (~ 2 minutes)
• Easy to update
• Two methods
• Binaries (.staticframework)
• Cocoapods (https://github.com/CocoaPods/CocoaPods)
Components (1)
• View controller containers & API
• Animations
• Dynamic localization
• Core Data extensions
• Controls (label, cursor, text field, etc.)
Components (2)
• Easy view and cell instantiation from nibs
• Lightweight logger
• And more!
Containers
• High-quality containers
• Composition (placeholder VC)
• Navigation (stack controller)
• Custom CA transitions
• Storyboard support
• Compatible with UIKit containers
Placeholder • Embed one or several VCs into another
Example 1 Example 2
-setInsetViewController:atIndex:
Stack • Push / pop view controllers
-pushViewController:withTransitionClass:animated:-popViewController:animated:
-insertViewController:atIndex:withTransitionClass:animated:-removeViewControllerAtIndex:animated:
Stack
Autorotation
• Use iOS 6 methods for all HLSViewController subclasses
• autorotationMode container property
• Available for CoconutKit containers...
• ... and for UIKit ones (no more subclassing)
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
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
[self.listAnimation playAnimated:YES];[self.listAnimation reverseAnimation] playAnimated:YES];
Localization
• Change localization at runtime
• nib localization without outlets
[NSBundle setLocalization:@”en”]
- (void)localize{[super localize];
// View controller localization code}
[NSBundle setLocalization:@”ar”]
Strings file
LS/Country of residenceULS/Country of residenceLLS/Country of residenceCLS/Country of residence
Pays de résidencePAYS DE RESIDENCEpays de résidencePays De Résidence
Core Data extensions
• Managed object context (MOC) stack
• Validation done right
• Text field bindings
MOC stack
context-free methods
Validation
• Validations written once
• Called separately or globally
• Error-chaining done right
Text field bindings
• Bind text field to underlying model object field
• Optional formatter
Label
• Vertical alignment
• Font size adjustment even for nbrLines >= 2
Cursor
• Search bar
• Alert view done right
• Slideshows (cross-fade, Ken Burns, ribbon)
• Text field moving to avoid being hidden by the keyboard
And more!
And more!
Thanks for your attention!
Questions?