A free, open-source iOS app for painters learning color theory — built with SwiftUI, powered by real subtractive RYB pigment mixing.
Whether you're squeezing paint onto a palette for the first time or deepening your understanding of how colors behave on canvas, ColorWheel is a quiet companion in your studio.
ColorWheel has three tabs, each built around a different way of thinking about color:
An interactive color wheel where you pick any two colors by dragging on the wheel and adjusting brightness. The app mixes them using a subtractive RYB algorithm — the same color model painters have used for centuries — so the results feel true to life on canvas, not like screen pixels.
Choose your medium and watch how the mix changes:
- Oil — pure 50/50 pigment blend, the most accurate
- Acrylic — slight darkening, because acrylics shift as they dry
- Watercolor — transparency simulation, diluting toward white the way water thins paint
A curated library of 23 named artist pigments organized into five families:
| Family | Examples |
|---|---|
| Primaries | Cadmium Red, Ultramarine, Lemon Yellow |
| Secondaries | Cadmium Orange, Sap Green, Violet |
| Tertiaries | Vermilion, Gamboge, Viridian, Indigo |
| Earth Tones | Yellow Ochre, Raw Sienna, Burnt Umber |
| Neutrals | Titanium White, Ivory Black, Payne's Gray |
Tap any two colors, and the Mixing Bench at the bottom shows you the blended result along with a harmony note — whether the two colors are analogous, complementary, near-complementary, or something in between. Great for planning a painting before you open a tube.
A reference guide covering the essentials of color theory as it applies to painting:
- The color wheel — primaries, secondaries, tertiaries
- Mixing concepts — complementary pairs, analogous harmony, warm vs. cool, tints and shades
- How each medium behaves differently on the palette and on the support
Mixer · Palette · Theory
- Xcode 15 or later
- iOS 17.0 or later (iPhone and iPad)
- No third-party dependencies — pure SwiftUI, no CocoaPods, no Swift packages
-
Clone the repo
git clone https://github.com/Greg-Kojadinovich/ColorWheel.git cd ColorWheel -
Open in Xcode
open ColorWheel.xcodeproj
-
Select a simulator or device In the Xcode toolbar, pick any iPhone running iOS 17+.
-
Build and run Press
⌘R. Xcode will generate a scheme on first open — that's normal.
Note on signing: The project has no development team set. Xcode will prompt you to set your own team under Signing & Capabilities if you want to run on a physical device. For the simulator, no changes are needed.
ColorWheel/
├── ColorWheelApp.swift # App entry point
├── ContentView.swift # Tab navigation (Mixer · Palette · Theory)
│
├── Models/
│ ├── PaintMedium.swift # Oil / Acrylic / Watercolor enum
│ ├── ColorMixer.swift # RYB subtractive mixing algorithm
│ └── PaintColor.swift # Named pigment library & families
│
├── Views/
│ ├── ColorWheelPickerView.swift # Interactive HSB color wheel widget
│ ├── ColorMixerView.swift # Tab 1 — freeform wheel mixer
│ ├── PalettePickerView.swift # Tab 2 — named pigment palette
│ └── TheoryView.swift # Tab 3 — color theory reference
│
└── Assets.xcassets/ # App icon & accent color
The mixing engine uses the RYB (Red–Yellow–Blue) subtractive color model, which is how traditional paint pigments actually behave, as opposed to the RGB additive model used by screens.
The algorithm:
- Converts each color from RGB to RYB color space (Gosset & Chen approximation)
- Mixes the two RYB colors using a geometric mean (
√(a × b)) — this avoids the muddy brown you get from simple averaging - Converts the result back to RGB
- Applies a medium modifier (opacity, drying shift, water dilution)
This means mixing yellow and blue gives you green, red and yellow gives orange, and complementary colors produce rich neutral grays rather than flat gray — just like real paint.
Color theory as taught to painters is rooted in the RYB model — not the scientifically precise CMY or RGB models. Red, yellow, and blue are treated as the three primaries because those are the pigment colors that cannot be mixed from anything else. Every other color on the wheel follows from combinations of those three.
The harmony concepts in the Theory tab — analogous, complementary, triadic relationships — all describe how colors feel next to each other. Complementary pairs (like orange and blue) create visual tension and vibration. Analogous colors (neighbors on the wheel) feel calm and unified. Understanding these relationships is one of the most powerful tools a painter can develop.
This is an open learning tool and improvements are very welcome. If you add pigments, improve accessibility, or build something inspired by this — share it.
MIT — free to use, modify, and share. See LICENSE for details.
If this project resonates with you, I'd love to connect.
I'm a passionate iOS developer who cares deeply about building apps that are both technically well-crafted and genuinely useful to people. I enjoy working at the intersection of good engineering and thoughtful design — projects where the product actually matters to its users.
If you're building something meaningful for iOS and are looking for a collaborator or want to bring someone onto your team, reach out. I'm open to full-time roles, contract work, and creative collaborations alike.
GitHub: github.com/Greg-Kojadinovich
Made with curiosity and a love of painting.


