Visualizing Async Algorithms: Supporting More Algorithms
We add support for more algorithms, like zip and combineLatest, and clean up our code.
Episode 305 · May 20
We explore Apple's new declarative UI framework.
66 Episodes · 23h52min
We add support for more algorithms, like zip and combineLatest, and clean up our code.
Episode 305 · May 20
We add drag gestures to make the input streams interactive.
Episode 304 · May 13
We transform arrays of events into async streams, run the merge algorithm on them, and visualize the result.
Episode 303 · May 06
We start a new project to visualize the algorithms from the new Swift Async Algorithms package.
Episode 302 · Apr 29
We use type-level programming to specify the alignment for each level of the tree diagram separately.
Episode 293 · Feb 25
We use a custom alignment ID to control the positioning of parent nodes in our tree.
Episode 292 · Feb 18
We prepare a tree diagram view in SwiftUI to experiment with advanced alignment techniques.
Episode 291 · Feb 11
We show how animations in SwiftUI are implemented using transactions.
Episode 285 · Dec 17 2021
We detect the dates in our graph that are onscreen and use this to control a date picker.
Episode 280 · Nov 12 2021
We refine our graph view and add the ability to programmatically control the scroll view.
Episode 279 · Nov 05 2021
We start building a scrolling graph view that can display large amounts of data smoothly.
Episode 278 · Oct 29 2021
We finish our reimplementation of the matched geometry effect and discuss the discrepancies between SwiftUI's variant and ours.
Episode 260 · Jun 25 2021
We continue to work on our matched geometry implementation, adding the ability to the position as well as the size.
Episode 259 · Jun 18 2021
We look at SwiftUI's new AsyncImage API and reimplement it using async/await.
Episode 258 · Jun 11 2021
We start reimplementing SwiftUI's matched geometry effect to gain a better understanding of how it works.
Episode 257 · Jun 04 2021
We complete the pinch to open and pinch to close transitions from the last episode.
Episode 256 · May 28 2021
We combine magnification gestures with matched geometry effects to create smooth transitions.
Episode 255 · May 21 2021
We look at a technique similar to SwiftUI's ScrollViewReader to access the underlying MKMapView of a SwiftUI map.
Episode 254 · May 14 2021
We revisit our SwiftUI flow layout implementation from 1.5 years ago and write a simpler and more correct version.
Episode 253 · May 07 2021
We implement a row of buttons with equal widths and dynamic content based on the available space.
Episode 243 · Feb 26 2021
We implement a horizontal bar chart with labels at both ends of the bars.
Episode 242 · Feb 19 2021
We implement a real-world layout that looks simple but is not so simple in SwiftUI.
Episode 241 · Feb 12 2021
We create a wrapper view to easily test animations with previews.
Episode 240 · Feb 05 2021
We refactor our SwiftUI views to be testable in previews without mocking the model.
Episode 239 · Jan 29 2021
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