Visual Node Editor (Part 9)
We add share support, which exports diagrams as different content types, including text, JSON, image, and PDF.
talk.objc.io/episodes/S01...
Visual Node Editor (Part 9)
We add share support, which exports diagrams as different content types, including text, JSON, image, and PDF.
talk.objc.io/episodes/S01...
Visual Node Editor (Part 8)
We clean up the code and transform the project to a document-based app.
talk.objc.io/episodes/S01...
Visual Node Editor (Part 8)
We clean up the code and transform the project to a document-based app.
talk.objc.io/episodes/S01...
Visual Node Editor (Part 7)
We add snapping to node resizing, with shared state managed in the model rather than in preferences or the environment.
talk.objc.io/episodes/S01...
Visual Node Editor (Part 7)
We add snapping to node resizing, with shared state managed in the model rather than in preferences or the environment.
talk.objc.io/episodes/S01...
Visual Node Editor (Part 6)
We refactor our view state, moving properties and logic into a compound struct. This makes gestures more testable.
talk.objc.io/episodes/S01...
Visual Node Editor (Part 6)
We refactor our view state, moving properties and logic into a compound struct. This makes gestures more testable.
talk.objc.io/episodes/S01...
Visual Node Editor (Part 5)
We address some issues with multi-selection, moving node state to the graph view, which we plan to simplify later.
talk.objc.io/episodes/S01...
Visual Node Editor (Part 5)
We address some issues with multi-selection, moving node state to the graph view, which we plan to simplify later.
talk.objc.io/episodes/S01...
Visual Node Editor (Part 4)
We add multi-select for nodes, but that means rethinking our focus architecture.
talk.objc.io/episodes/S01...
Visual Node Editor (Part 4)
We add multi-select for nodes, but that means rethinking our focus architecture.
talk.objc.io/episodes/S01...
Visual Node Editor (Part 3)
We wire-up the draggable resize handles, and deal with some tricky edge case logic.
talk.objc.io/episodes/S01...
Visual Node Editor (Part 3)
We wire-up the draggable resize handles, and deal with some tricky edge case logic.
talk.objc.io/episodes/S01...
Visual Node Editor (Part 2)
We add focus behavior to the nodes and edges, with custom drawing and resize handles.
talk.objc.io/episodes/S01...
Visual Node Editor (Part 2)
We add focus behavior to the nodes and edges, with custom drawing and resize handles.
talk.objc.io/episodes/S01...
Visual Node Editor (Part 1)
In a new series, we build a node editor to explore focus, selection, gestures, and accessibility.
This episode is free to watch, enjoy! 😊
talk.objc.io/episodes/S01...
Visual Node Editor (Part 1)
In a new series, we build a node editor to explore focus, selection, gestures, and accessibility.
This episode is free to watch, enjoy! 😊
talk.objc.io/episodes/S01...
SwiftUI as Static Site Generator (Part 6)
We finish the series by adding Hummingbird as a web server, using WebSockets to reload live when something changes.
talk.objc.io/episodes/S01...
SwiftUI as Static Site Generator (Part 6)
We finish the series by adding Hummingbird as a web server, using WebSockets to reload live when something changes.
talk.objc.io/episodes/S01...
SwiftUI as Static Site Generator (Part 5)
We generate share images from SwiftUI views, and use hashing to reload them correctly when content changes.
talk.objc.io/episodes/S01...
SwiftUI as Static Site Generator (Part 5)
We generate share images from SwiftUI views, and use hashing to reload them correctly when content changes.
talk.objc.io/episodes/S01...
SwiftUI as Static Site Generator (Part 4)
We add a templating system using the environment, and integrate Swim for HTML generation.
talk.objc.io/episodes/S01...
SwiftUI as Static Site Generator (Part 4)
We add a templating system using the environment, and integrate Swim for HTML generation.
talk.objc.io/episodes/S01...
SwiftUI as Static Site Generator (Part 3)
We add directory observation, which lets us use SwiftUI's preferences to generate the site.
talk.objc.io/episodes/S01...
SwiftUI as Static Site Generator (Part 3)
We add directory observation, which lets us use SwiftUI's preferences to generate the site.
talk.objc.io/episodes/S01...
SwiftUI as Static Site Generator (Part 2)
We add file observation using GCD’s Dispatch Source APIs, which handle both standard write events and atomic delete-plus-write sequences.
talk.objc.io/episodes/S01...
SwiftUI as Static Site Generator (Part 2)
We add file observation using GCD’s Dispatch Source APIs, which handle both standard write events and atomic delete-plus-write sequences.
talk.objc.io/episodes/S01...
SwiftUI as Static Site Generator (Part 1)
We build a very unconventional static site generator on top of SwiftUI.
This episode is free to watch, enjoy! 😊
talk.objc.io/episodes/S01...
SwiftUI as Static Site Generator (Part 1)
We build a very unconventional static site generator on top of SwiftUI.
This episode is free to watch, enjoy! 😊
talk.objc.io/episodes/S01...
Building a Token Field (Part 5)
We finish our drag-and-drop implementation, displaying an insertion point for dragging and using Transferable for the drop.
talk.objc.io/episodes/S01...
Building a Token Field (Part 5)
We finish our drag-and-drop implementation, displaying an insertion point for dragging and using Transferable for the drop.
talk.objc.io/episodes/S01...
Building a Token Field (Part 4)
We use SwiftUI's drag-and-drop APIs to support token reordering. While dragging is almost free, we need a delegate to track the dropping position.
talk.objc.io/episodes/S01...
Building a Token Field (Part 4)
We use SwiftUI's drag-and-drop APIs to support token reordering. While dragging is almost free, we need a delegate to track the dropping position.
talk.objc.io/episodes/S01...
Building a Token Field (Part 3)
We add more selection and backspace behaviors. Token fields on macOS feel natural, but they're actually quite complicated!
talk.objc.io/episodes/S01...
Building a Token Field (Part 3)
We add more selection and backspace behaviors. Token fields on macOS feel natural, but they're actually quite complicated!
talk.objc.io/episodes/S01...
Building a Token Field (Part 2)
We add selection to our custom SwiftUI token field. Even the most basic behaviors are quite tricky!
talk.objc.io/episodes/S01...
Building a Token Field (Part 2)
We add selection to our custom SwiftUI token field. Even the most basic behaviors are quite tricky!
talk.objc.io/episodes/S01...
Building a Token Field (Part 1)
In a new series, we build a token view from scratch, using pure SwiftUI.
This episode is free to watch, enjoy! 😊
talk.objc.io/episodes/S01...
Building a Token Field (Part 1)
In a new series, we build a token view from scratch, using pure SwiftUI.
This episode is free to watch, enjoy! 😊
talk.objc.io/episodes/S01...
Building a FaceTime-like Animation (Part 2)
We add smoothly animated drag gestures to our FaceTime-like view.
talk.objc.io/episodes/S01...
Building a FaceTime-like Animation (Part 2)
We add smoothly animated drag gestures to our FaceTime-like view.
talk.objc.io/episodes/S01...
Building a FaceTime-like Animation (Part 1)
We build an interactive animation similar to FaceTime’s picture-in-picture view, visualizing the path it takes.
This episode is free to watch, enjoy! 😊
talk.objc.io/episodes/S01...
Building a FaceTime-like Animation (Part 1)
We build an interactive animation similar to FaceTime’s picture-in-picture view, visualizing the path it takes.
This episode is free to watch, enjoy! 😊
talk.objc.io/episodes/S01...
Staggered Animations Revisited (Part 3)
We add priorities and custom sorting to our staggered animations.
talk.objc.io/episodes/S01...
Staggered Animations Revisited (Part 3)
We add priorities and custom sorting to our staggered animations.
talk.objc.io/episodes/S01...
Staggered Animations Revisited (Part 2)
We add custom transitions using SwiftUI's Transition protocol, which work when new views are inserted.
talk.objc.io/episodes/S01...
Staggered Animations Revisited (Part 2)
We add custom transitions using SwiftUI's Transition protocol, which work when new views are inserted.
talk.objc.io/episodes/S01...
Staggered Animations Revisited
After a two year hiatus, we build a staggered modifier in SwiftUI that works with any view in the view tree.
This episode is free to watch! 😊
talk.objc.io/episodes/S01...
Staggered Animations Revisited
After a two year hiatus, we build a staggered modifier in SwiftUI that works with any view in the view tree.
This episode is free to watch! 😊
talk.objc.io/episodes/S01...