June 10 2020

Pastel for iPad

All of us have a list of projects we'd like to do someday, when the stars align. One of the things I've had in the back of my mind for a while now was 'something to do with colors'.

There's a missing part of iOS that's always bugged me, and that's comprehensive support for colors at a system level. One of my favorite bits of UI since the early days of Mac OS X was the system color panel, originally from NEXTSTEP. It's beautifully comprehensive, with wheels, sliders, palettes, crayons, swatches, and the amazing eyedropper tool, and it's supported throughout Cocoa apps on the Mac. Most Mac apps make use of a color well control somewhere in their UI, and you can drag and drop colors between apps, and even onto rich text in all system editors.


Color is a fundamental type of object in desktop macOS, and I love that.

iOS never gained a standard color picker UI; a platform used by artists everywhere, with amazing creative apps and a first-party stylus accessory from Apple, and yet everybody has to reinvent the [color] wheel. Now that UIKit apps have come to the Mac, via Catalyst, it's even more jarring that UIKit has no way to invoke a system color picker.

One thing iOS does support is drag and drop for colors — but you'd never know it. The iWork suite lets you drop colors onto shapes and objects to fill them, Mail and Safari let you drop colors onto rich text to style it, and third-party apps have been free to implement color drag & drop for years, although only a select few have, like MindNode, and Concepts.

"The very first build of Pastel"

From humble beginnings…

Just before Broadcasts development kicked into high gear I started prototyping an app to manage and collect colors, with inter-app drag and drop support, called Pastel. You might have been following along with the development journal I kept on Twitter.

Like most of my projects these days, it started on the Mac as a Catalyst app and spent much of its early development there before being brought to the iPad, and later iPhone. I really love the direction of that workflow, the opposite direction most Catalyst developers would go, as it forces you to care about the complexity of the Mac first before distilling it down into something that fits on a tiny screen, and it allows for a faster development cycle than building for the iOS Simulator or device.

There are really three scenarios in which I'd want a color palette library app for myself:

I built Pastel entirely around the first two scenarios, and have prototypes for future updates around the third. I think it's reflected throughout the UI: you can copy a variety of iOS developer representations, for instance, or a tiny bitmap version of your palette, from the context menus, but I've (for now) intentionally avoided building the kinds of features that professional artists or designers might want or expect.

"Pastel's context menu"

I lovingly recreated a whole bunch of macOS' NSColorPanel on iOS, including my favorite tab, the Crayon picker. This wasn't as much work as it sounds, and it was a pretty fun experience — especially the little things, like determining just how exactly those color sliders work as they update in realtime.

"Pastel's color picker"

Drag & Drop

Key to making Pastel part of advanced workflows on iPad is supporting drag and drop. You can pick up any color from any palette and drop it inside another app, and it's been crazy cool to see other developers pledge support for this in their apps (❤️) now that I've raised awareness about the potential of this capability. Color drag & drop is part of iOS, open to anybody, and it would be great to see it in more places. I'd love for Pastel to be a fun halo app for this kind of scenario, and I'd love it even more if this spurs Apple into providing a systemwide color picker & more-comprehensive color support in future versions of iOS.

To make this even more interesting, in the next update to Pastel (likely available by the time you read this), there's a mode that lets you use Pastel as a splitscreen color picker window from which you can drag into any supporting apps.

Available on the App Store

If any of this sounded interesting to you, Pastel is now available for iPhone and iPad — free to try, with a library cap of 20 items, and a $4.99 in-app-purchase if you like it and want to unlock a larger library. The Mac version of Pastel will be something I pick up sometime after WWDC with the intention of launching later this summer, and it's all Universal Purchase so you won't have to pay anything extra when it does launch.

It's been a blast working on Pastel, and I really hope you like it. Feel free to send pictures of the pretty palettes and libraries you create, and please consider supporting color drag & drop in your own apps!

"Pastel's palette view"

"Pastel's large palette display"

"Pastel's image import panel"