SlideShare una empresa de Scribd logo
1 de 31
Descargar para leer sin conexión
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
- (void)localize
  {
    [super localize];

      // View controller localization code
  }




[NSBundle setLocalization:@”en”]    [NSBundle setLocalization:@”ar”]
LS/Country    of    residence
                                      ULS/Country    of    residence
                                      LLS/Country    of    residence
                                      CLS/Country    of    residence




Strings file
              Pays   de   résidence
              PAYS   DE   RESIDENCE
              pays   de   résidence
              Pays   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
And more!

• Search bar
• Alert view done right
• Slideshows (cross-fade, Ken Burns, ribbon)
• Text field moving to avoid being hidden by
  the keyboard
And more!
Thanks for your
  attention!
Questions?

Más contenido relacionado

La actualidad más candente

Real World Rails Deployment
Real World Rails DeploymentReal World Rails Deployment
Real World Rails DeploymentAlan Hecht
 
Amazon Aurora の活用 - Developers.IO in OSAKA
Amazon Aurora の活用 - Developers.IO in OSAKAAmazon Aurora の活用 - Developers.IO in OSAKA
Amazon Aurora の活用 - Developers.IO in OSAKA崇之 清水
 
iOS UI debugging
iOS UI debuggingiOS UI debugging
iOS UI debuggingdavidolesch
 
Amazon DynamoDB by Aswin
Amazon DynamoDB by AswinAmazon DynamoDB by Aswin
Amazon DynamoDB by AswinAgate Studio
 

La actualidad más candente (9)

Dev-Friendly Ops
Dev-Friendly OpsDev-Friendly Ops
Dev-Friendly Ops
 
CloudKit
CloudKitCloudKit
CloudKit
 
Real World Rails Deployment
Real World Rails DeploymentReal World Rails Deployment
Real World Rails Deployment
 
[Start] Playing
[Start] Playing[Start] Playing
[Start] Playing
 
RavenDB in the wild
RavenDB in the wildRavenDB in the wild
RavenDB in the wild
 
Amazon Aurora の活用 - Developers.IO in OSAKA
Amazon Aurora の活用 - Developers.IO in OSAKAAmazon Aurora の活用 - Developers.IO in OSAKA
Amazon Aurora の活用 - Developers.IO in OSAKA
 
iOS UI debugging
iOS UI debuggingiOS UI debugging
iOS UI debugging
 
Amazon DynamoDB by Aswin
Amazon DynamoDB by AswinAmazon DynamoDB by Aswin
Amazon DynamoDB by Aswin
 
Sinatra
SinatraSinatra
Sinatra
 

Similar a CoconutKit

Starting from scratch in 2017
Starting from scratch in 2017Starting from scratch in 2017
Starting from scratch in 2017Stefano Bonetta
 
CosmosDB for DBAs & Developers
CosmosDB for DBAs & DevelopersCosmosDB for DBAs & Developers
CosmosDB for DBAs & DevelopersNiko Neugebauer
 
Kubernetes Manchester - 6th December 2018
Kubernetes Manchester - 6th December 2018Kubernetes Manchester - 6th December 2018
Kubernetes Manchester - 6th December 2018David Stockton
 
Cappuccino - A Javascript Application Framework
Cappuccino - A Javascript Application FrameworkCappuccino - A Javascript Application Framework
Cappuccino - A Javascript Application FrameworkAndreas Korth
 
SharePoint 2014: Where to save my data, for devs!
SharePoint 2014: Where to save my data, for devs!SharePoint 2014: Where to save my data, for devs!
SharePoint 2014: Where to save my data, for devs!Ben Steinhauser
 
The Wix Microservice Stack
The Wix Microservice StackThe Wix Microservice Stack
The Wix Microservice StackTomer Gabel
 
MJ Berends talk from AWS Chicago Summit
MJ Berends talk from AWS Chicago SummitMJ Berends talk from AWS Chicago Summit
MJ Berends talk from AWS Chicago SummitAWS Chicago
 
7_OPEN17_Azure_Next-gen Development with PaaS & Containers
7_OPEN17_Azure_Next-gen Development with PaaS & Containers7_OPEN17_Azure_Next-gen Development with PaaS & Containers
7_OPEN17_Azure_Next-gen Development with PaaS & ContainersKangaroot
 
PLAT-7 Spring Web Scripts and Spring Surf
PLAT-7 Spring Web Scripts and Spring SurfPLAT-7 Spring Web Scripts and Spring Surf
PLAT-7 Spring Web Scripts and Spring SurfAlfresco Software
 
PLAT-7 Spring Web Scripts and Spring Surf
PLAT-7 Spring Web Scripts and Spring SurfPLAT-7 Spring Web Scripts and Spring Surf
PLAT-7 Spring Web Scripts and Spring SurfAlfresco Software
 
MJ Berends talk - Women & Non-Binary Focused Intro to AWS
 MJ Berends talk - Women & Non-Binary Focused Intro to AWS MJ Berends talk - Women & Non-Binary Focused Intro to AWS
MJ Berends talk - Women & Non-Binary Focused Intro to AWSAWS Chicago
 
Testing Rapidly Changing Applications With Self-Testing Object-Oriented Selen...
Testing Rapidly Changing Applications With Self-Testing Object-Oriented Selen...Testing Rapidly Changing Applications With Self-Testing Object-Oriented Selen...
Testing Rapidly Changing Applications With Self-Testing Object-Oriented Selen...seleniumconf
 
Cloud Native Camel Riding
Cloud Native Camel RidingCloud Native Camel Riding
Cloud Native Camel RidingChristian Posta
 
Inside Wordnik's Architecture
Inside Wordnik's ArchitectureInside Wordnik's Architecture
Inside Wordnik's ArchitectureTony Tam
 
Containers, Serverless and Functions in a nutshell
Containers, Serverless and Functions in a nutshellContainers, Serverless and Functions in a nutshell
Containers, Serverless and Functions in a nutshellEugene Fedorenko
 
CT Software Developers Meetup: Using Docker and Vagrant Within A GitHub Pull ...
CT Software Developers Meetup: Using Docker and Vagrant Within A GitHub Pull ...CT Software Developers Meetup: Using Docker and Vagrant Within A GitHub Pull ...
CT Software Developers Meetup: Using Docker and Vagrant Within A GitHub Pull ...E. Camden Fisher
 
Masterin Large Scale Java Script Applications
Masterin Large Scale Java Script ApplicationsMasterin Large Scale Java Script Applications
Masterin Large Scale Java Script ApplicationsFabian Jakobs
 
iOS Development: What's New
iOS Development: What's NewiOS Development: What's New
iOS Development: What's NewNascentDigital
 

Similar a CoconutKit (20)

Starting from scratch in 2017
Starting from scratch in 2017Starting from scratch in 2017
Starting from scratch in 2017
 
CosmosDB for DBAs & Developers
CosmosDB for DBAs & DevelopersCosmosDB for DBAs & Developers
CosmosDB for DBAs & Developers
 
Kubernetes Manchester - 6th December 2018
Kubernetes Manchester - 6th December 2018Kubernetes Manchester - 6th December 2018
Kubernetes Manchester - 6th December 2018
 
Cappuccino - A Javascript Application Framework
Cappuccino - A Javascript Application FrameworkCappuccino - A Javascript Application Framework
Cappuccino - A Javascript Application Framework
 
SharePoint 2014: Where to save my data, for devs!
SharePoint 2014: Where to save my data, for devs!SharePoint 2014: Where to save my data, for devs!
SharePoint 2014: Where to save my data, for devs!
 
The Wix Microservice Stack
The Wix Microservice StackThe Wix Microservice Stack
The Wix Microservice Stack
 
MJ Berends talk from AWS Chicago Summit
MJ Berends talk from AWS Chicago SummitMJ Berends talk from AWS Chicago Summit
MJ Berends talk from AWS Chicago Summit
 
7_OPEN17_Azure_Next-gen Development with PaaS & Containers
7_OPEN17_Azure_Next-gen Development with PaaS & Containers7_OPEN17_Azure_Next-gen Development with PaaS & Containers
7_OPEN17_Azure_Next-gen Development with PaaS & Containers
 
PLAT-7 Spring Web Scripts and Spring Surf
PLAT-7 Spring Web Scripts and Spring SurfPLAT-7 Spring Web Scripts and Spring Surf
PLAT-7 Spring Web Scripts and Spring Surf
 
PLAT-7 Spring Web Scripts and Spring Surf
PLAT-7 Spring Web Scripts and Spring SurfPLAT-7 Spring Web Scripts and Spring Surf
PLAT-7 Spring Web Scripts and Spring Surf
 
MJ Berends talk - Women & Non-Binary Focused Intro to AWS
 MJ Berends talk - Women & Non-Binary Focused Intro to AWS MJ Berends talk - Women & Non-Binary Focused Intro to AWS
MJ Berends talk - Women & Non-Binary Focused Intro to AWS
 
Testing Rapidly Changing Applications With Self-Testing Object-Oriented Selen...
Testing Rapidly Changing Applications With Self-Testing Object-Oriented Selen...Testing Rapidly Changing Applications With Self-Testing Object-Oriented Selen...
Testing Rapidly Changing Applications With Self-Testing Object-Oriented Selen...
 
Cloud Native Camel Riding
Cloud Native Camel RidingCloud Native Camel Riding
Cloud Native Camel Riding
 
Inside Wordnik's Architecture
Inside Wordnik's ArchitectureInside Wordnik's Architecture
Inside Wordnik's Architecture
 
Containers, Serverless and Functions in a nutshell
Containers, Serverless and Functions in a nutshellContainers, Serverless and Functions in a nutshell
Containers, Serverless and Functions in a nutshell
 
From 0 to syncing
From 0 to syncingFrom 0 to syncing
From 0 to syncing
 
CT Software Developers Meetup: Using Docker and Vagrant Within A GitHub Pull ...
CT Software Developers Meetup: Using Docker and Vagrant Within A GitHub Pull ...CT Software Developers Meetup: Using Docker and Vagrant Within A GitHub Pull ...
CT Software Developers Meetup: Using Docker and Vagrant Within A GitHub Pull ...
 
Masterin Large Scale Java Script Applications
Masterin Large Scale Java Script ApplicationsMasterin Large Scale Java Script Applications
Masterin Large Scale Java Script Applications
 
Into The Box 2023 Keynote Day 1
Into The Box 2023 Keynote Day 1Into The Box 2023 Keynote Day 1
Into The Box 2023 Keynote Day 1
 
iOS Development: What's New
iOS Development: What's NewiOS Development: What's New
iOS Development: What's New
 

Último

How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerThousandEyes
 
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...shyamraj55
 
The Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxThe Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxMalak Abu Hammad
 
Benefits Of Flutter Compared To Other Frameworks
Benefits Of Flutter Compared To Other FrameworksBenefits Of Flutter Compared To Other Frameworks
Benefits Of Flutter Compared To Other FrameworksSoftradix Technologies
 
Salesforce Community Group Quito, Salesforce 101
Salesforce Community Group Quito, Salesforce 101Salesforce Community Group Quito, Salesforce 101
Salesforce Community Group Quito, Salesforce 101Paola De la Torre
 
Pigging Solutions in Pet Food Manufacturing
Pigging Solutions in Pet Food ManufacturingPigging Solutions in Pet Food Manufacturing
Pigging Solutions in Pet Food ManufacturingPigging Solutions
 
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...HostedbyConfluent
 
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhi
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | DelhiFULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhi
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhisoniya singh
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationSafe Software
 
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationRadu Cotescu
 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024Rafal Los
 
Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)Allon Mureinik
 
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024BookNet Canada
 
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure serviceWhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure servicePooja Nehwal
 
Handwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsHandwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsMaria Levchenko
 
IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsEnterprise Knowledge
 
Azure Monitor & Application Insight to monitor Infrastructure & Application
Azure Monitor & Application Insight to monitor Infrastructure & ApplicationAzure Monitor & Application Insight to monitor Infrastructure & Application
Azure Monitor & Application Insight to monitor Infrastructure & ApplicationAndikSusilo4
 
Human Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsHuman Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsMark Billinghurst
 
SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024Scott Keck-Warren
 
08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking MenDelhi Call girls
 

Último (20)

How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
 
The Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxThe Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptx
 
Benefits Of Flutter Compared To Other Frameworks
Benefits Of Flutter Compared To Other FrameworksBenefits Of Flutter Compared To Other Frameworks
Benefits Of Flutter Compared To Other Frameworks
 
Salesforce Community Group Quito, Salesforce 101
Salesforce Community Group Quito, Salesforce 101Salesforce Community Group Quito, Salesforce 101
Salesforce Community Group Quito, Salesforce 101
 
Pigging Solutions in Pet Food Manufacturing
Pigging Solutions in Pet Food ManufacturingPigging Solutions in Pet Food Manufacturing
Pigging Solutions in Pet Food Manufacturing
 
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...
 
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhi
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | DelhiFULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhi
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhi
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
 
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organization
 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024
 
Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)
 
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
 
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure serviceWhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
 
Handwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsHandwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed texts
 
IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI Solutions
 
Azure Monitor & Application Insight to monitor Infrastructure & Application
Azure Monitor & Application Insight to monitor Infrastructure & ApplicationAzure Monitor & Application Insight to monitor Infrastructure & Application
Azure Monitor & Application Insight to monitor Infrastructure & Application
 
Human Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsHuman Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR Systems
 
SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024
 
08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men
 

CoconutKit

  • 1. CoconutKit Samuel Défago, le studio Cocoaheads — December 2012
  • 2. 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
  • 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 (https://github.com/ defagos/CoconutKit) • Wiki (https://github.com/defagos/ CoconutKit/wiki) • Binaries (https://github.com/defagos/ CoconutKit/downloads)
  • 8. Adding to a project • Easy to integrate (~ 2 minutes) • Easy to update • Two methods • Binaries (.staticframework) • Cocoapods (https://github.com/ 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
  • 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 residence Strings 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
  • 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
  • 30. Thanks for your attention!