SwiftUI Path Builder: Selection
We add selection and multi-selection to our path drawing tool.
Episode 249 · Apr 09
We explore Apple's new declarative UI framework.
53 Episodes · 19h47min
We add selection and multi-selection to our path drawing tool.
Episode 249 · Apr 09
We generate SwiftUI path code from the drawing in our app.
Episode 248 · Apr 02
We add more gestures, like double-clicks and dragging with modifiers, to allow editing control points.
Episode 247 · Mar 26
We use drag gestures to allow moving existing points and control points around.
Episode 246 · Mar 19
We implement a click and drag gesture to draw curves and quad curves.
Episode 245 · Mar 12
We start building a Mac app to visually construct SwiftUI paths.
Episode 244 · Mar 05
We implement a row of buttons with equal widths and dynamic content based on the available space.
Episode 243 · Feb 26
We implement a horizontal bar chart with labels at both ends of the bars.
Episode 242 · Feb 19
We implement a real-world layout that looks simple but is not so simple in SwiftUI.
Episode 241 · Feb 12
We create a wrapper view to easily test animations with previews.
Episode 240 · Feb 05
We refactor our SwiftUI views to be testable in previews without mocking the model.
Episode 239 · Jan 29
We provide the current slide number and total slide count via the environment and display them in the footer.
Episode 222 · Sep 25 2020
We add custom animations and use SwiftUI's matched geometry effect for animations between slides.
Episode 221 · Sep 18 2020
We create a wrapper view for slide headers that allows us to style all headers via the environment.
Episode 220 · Sep 11 2020
We scale our slides to fit any screen size and use SwiftUI Previews to render previews of all slides.
Episode 219 · Sep 04 2020
We implement a custom function builder to enable writing slides with the same syntax as SwiftUI views.
Episode 218 · Aug 28 2020
We start building a SwiftUI library for creating presentation slides.
Episode 217 · Aug 21 2020
We rebuild the model layer with structs instead of classes and use bindings to provide mutable access to the views.
Episode 202 · May 08 2020
We use published properties and property observers to clean up our model code, and we fix some issues on the iPad.
Episode 201 · May 01 2020
We take a callback-based model API and refactor it into an observable object.
Episode 200 · Apr 24 2020
We create a lazy wrapper for observable objects and use dynamic member lookup to ease its use.
Episode 199 · Apr 17 2020
We wrap a UIKit alert in a SwiftUI-like API to present an alert with a text field.
Episode 198 · Apr 10 2020
We continue working on the recording and playback screens while reusing existing model and helper classes from the MVC app.
Episode 197 · Apr 03 2020
We start to implement the MVC sample app from our App Architecture book in SwiftUI reusing the original model.
Episode 196 · Mar 27 2020
We wrap an MKMapView, using a diff on the annotations to properly animate insertions and removals.
Episode 195 · Mar 20 2020
We create a view that automatically scales a text view to fill the available space.
Episode 194 · Mar 13 2020
We add labels to the analog clock face, and we make it configurable to reuse it for counting the minutes.
Episode 193 · Mar 06 2020
We add lap times to the model, show them in a list, and highlight the shortest and longest laps.
Episode 183 · Dec 20 2019
We add the data model for the stopwatch to make it functional.
Episode 182 · Dec 13 2019
We enable our stopwatch buttons to self-size to fit their labels.
Episode 181 · Dec 06 2019
We use a custom button style to imitate the appearance of the stopwatch buttons on iOS.
Episode 180 · Nov 29 2019
We refactor our use of geometry readers and preferences to make our code more expressive.
Episode 179 · Nov 22 2019
We implement the drop functionality and work around several obstacles we encounter along the way.
Episode 178 · Nov 15 2019
We make our shopping cart interactive by adding drag and drop.
Episode 177 · Nov 08 2019
We use a view modifier with local state to animate views onto the screen.
Episode 176 · Nov 01 2019
We use anchors, preferences, and transitions to animate items from a grid into a cart.
Episode 175 · Oct 25 2019
We examine SwiftUI's animation curves using a custom view modifier.
Episode 174 · Oct 18 2019
We explore SwiftUI's rendering and animation model while building a shake animation.
Episode 173 · Oct 11 2019
We use drag gesture recognizers to add reordering capabilities to our SwiftUI collection view.
Episode 169 · Sep 13 2019
We implement single-line and flow layouts for our SwiftUI collection view.
Episode 168 · Sep 06 2019
As a first step toward a collection view, we enable child views to communicate their sizes to a parent view.
Episode 167 · Aug 30 2019
We further refine the animation from last episode and refactor it using a geometry effect.
Episode 166 · Aug 23 2019
We start building a custom animation of a shape that moves along a path.
Episode 165 · Aug 16 2019
We experiment with paths and shapes to create a triangular preview badge.
Episode 164 · Aug 09 2019
We integrate Apple's web authentication framework to enable logging in with GitHub and then store the credentials using a keychain property wrapper.
Episode 163 · Aug 02 2019
We create a two-way binding from the play position of the video player to a bindable model object.
Episode 162 · Jul 26 2019
We integrate an AVPlayerViewController, expose its play state as a binding, and use a SwiftUI view as an overlay.
Episode 161 · Jul 17 2019
We look at different ways to load data from the network less eagerly.
Episode 160 · Jul 12 2019
We explore different approaches to passing data around in our SwiftUI app.
Episode 159 · Jul 05 2019
We start building a Swift Talk app using SwiftUI.
Episode 158 · Jun 28 2019
We integrate the tiny networking library into a SwiftUI project and wrap AppKit's progress indicator in a SwiftUI view.
Episode 157 · Jun 21 2019
We build a simple currency converter to experiment with SwiftUI's state-driven view updates.
Episode 156 · Jun 14 2019