Joris Kluivers

I like to build software.

Quartz Composer for iOS

While not nearly completed I decided to publish my implementation of Quartz Composer for iOS. This project intends to provide a rendering & interaction framework for .qtz on your iPhone or iPad. Similar to what the Quartz Composer framework provides on OS X.

Composition rendered in Quartz Composer and iPhone simulator

Why?

Let me make one thing clear, I don’t see QC as a tool to create iOS applications. After some recent Facebook Home & Quartz Composer more people have taken an interest in QC for prototyping. I’ve also seen questions on how to convert these prototypes into code. This project is not an answer to that question. Prototypes in QC are just that, prototypes. Use UIKit to implement the actual app.

However I see some possible integration for QC and UIKit, like how it’s currently possible to integrate QC and Cocoa on the Mac. QC is ideal to create:

  • Image transitions (imagine a custom UIStoryboardSegue using a Quartz Composer effect)
  • Video processing (Instagram like filters)
  • 2D/3D animations

all without writing much code.

But first of all this is a side project for me to challenge myself to learn new things.

Current state

Currently only a small subset of the available patches has been implemented. This is enough to show something interesting on screen but your random composition will probably fail to render. I’m currently working to add support for more patches.

For demo purposes I implemented all patches needed to render the iMessage recreation by Jay Thrash (based on a concept by Florian Peninon).

See the following video for a demo:

A demo of my Quartz Composer implementation for iOS. This is still a work in progress, but shows of initial results. More info on my weblog: http://joris.kluivers.nl

Future improvements

As already mentioned a lot of patches are still missing. This is an ongoing effort as I create more demo compositions and try to make those work.

The video also shows performance is far from optimal. Currently overall architecture and implementation is kept as naive and simple as possible. A first improvement I have planned is a rewrite of the image and texture handling, something that is currently incorrect and also the main performance hog.

Source

For the source code see qc-mobile at Github. The project also contains the demo application shown in the above video.

Do you have a composition you would like to see work on iOS, or got any comments? Any feedback is appreciated.

Contact me via Twitter.