Two and a half years ago, my previous employer bought me a Mac Mini and gave me a simple mission: Investigate iOS development. So I found myself spending a couple of weeks reading documentation, from Objective-C basics to iOS fundamentals, to more advanced topics, making little code experiments which ultimately should give birth to an application. It was love at first sight. Nobody around me was working on iOS at that time, so I was lost alone in a foreign world. It was thrilling.
When I look back at my first application, though, I can nothing but laugh: Clumsy implementations, incorrect patterns, bad design choices. But still I could gain a solid understanding of iOS development core concepts, and some best practices which I still apply nowadays.
Two months later, I started working at hortis, after my old employer decided iOS development was not promising enough to deserve having a dedicated engineer. I tried not to make the same mistakes as before and, guided by a team of already experienced iOS developers, I wrote my first real iPhone application. As I progressed, I decided to stuff everything I found interesting into a static library for later reuse: CoconutKit was born.
It is after I wrote some more applications, mostly for the iPad, that I realised I was spending too much time on repetitive and cumbersome tasks, most notably:
I began tackling those problems one by one and, as I made progress, CoconutKit grew larger. As I finally open sourced version 1.0 in August 2011, most of the above problems had found a quite satisfying solution:
As I wrote more applications, though, major limitations and issues arose:
Six months ago, I decicded to fix iOS 5 and 6 behaviour, but as I was making progress, I found some refactoring was necessary. As I was making progress, it became clear that a small refactoring would not suffice, and I decided to implement containers again from scratch, eliminating all issues which could not be fixed with the previous implementation. I also decided to refactor animations at the same time, so that new container transition animations could be created.
The results went far beyond expectations, and I could implement the objects I was dreaming for two years ago:
I initially planned to release a 1.1.4 or 1.2, but those massive changes justified a major version bump. I am therefore proud to announce that CoconutKit 2.0 is now available from its official github page. This version is a huge leap forward. Start using it now, and create iOS applications like never before!
In the upcoming weeks, I will write a few tutorials covering the basics of CoconutKit. Those will be added to the project wiki. Stay tuned!