WWDC23 Week 2
Week 2 Progress
Progress report: 70 of 177 videos watched and summarized, or 39.55%. So less progress than last week, but I still averaged 4 videos a day which is respectable progress with about a month left. I'm guessing that I'll keep slowing down as the videos get more and more off topic from my core interests.
Create rich documentation with Swift-DocC
This gets into detail on some of the more advances DoCC features. The rendering directives look really nice, and having a live preview is a big improvement for iteration.
Write Swift Macros
A great step by step guide for writing macros. When I need to write a Macro for something, I’ll come back to this session for reference. One interesting detail of note is how much Apple is pushing using testing to ensure correct macro behavior.
Beyond scroll views
This goes over several new SwiftUI features that make scroll view behaviors that were previously very difficult like snapping to content at the end of a scroll easy to do with help from the system. This should be a huge win for implementing custom designs faster and with fewer ugly hacks.
What’s new in SF Symbols 5
Seeing how animation in SF Symbols works is interesting. It’s a relatively limited set of animations, and there’s no keyframes or other information, instead it’s using the layer information to choose which parts of the symbol to highlight or scale
Meet StoreKit for SwiftUI
This continues the pattern of Apple working to make working with subscriptions and in app purchases significantly cleaner. The StoreKit in SwiftUI additions give you a decent base view, and offers lots of places for customization, and also allows you to observe StoreKit state and update your view hierarchy based on state from that.
Wind your way through advanced animations in SwiftUI
This explains phase based and keyframe animations in detail. Phase based animations are a series of discrete steps, whereas keyframe based animations let you manually set up the keyframes and curves within an animation. This adds some of the last parts of animation support that was missing from previous release.
Bring widgets to new places
A light overview of the new places that widgets are supported, and the changes in the widgets API that were made to support those new places, in particular moving backgrounds to a new modifier so they can be removed easily, and changes to how to use the container padding.
Unlock the power of grammatical agreement
This covers the new grammatical agreement modes to both help make sure that you use the correct versions of words in grammar sensitive languages, and support for intelligently changing text based on preferred pronouns.
Design and Build apps for watchOS 10
This session is presented by both a designer and a developer, and explains both design and functional decisions for the UI updates in watchOS 10. It explains how to use the new layouts, and some of the new UI features like the color full bleed backgrounds.
Take SwiftUI to the next Dimension
This session goes into detail on how to integrate 3d elements into SwiftUI views in visionOS. Having done a bit of 3d work in the past, I’m very impressed with how much work is going into making it easy to use familiar design patterns, and how those patterns are extended into 3 dimensions.
Update your app for watchOS 10
This was a hands on demo of applying the design principles mentioned in other sessions to your app. If you’re looking for some concise code examples for a how to use the new design elements in watchOS this is a good session to refer to.
Evolve your ARKit app for spatial experiences
This session covers the new and updated capabilities that are available on visionOS. In particular it adds the ability to track world anchors at the system level, and hand tracking.
Design widgets for the Smart Stack on Apple Watch
Build widgets for the Smart Stack on Apple Watch
These sessions cover the design decisions to think about when putting together widgets in watchOS 10, and also detailed instructions for how to build a widget on watchOS 10. Definitely worth a look when sitting down to start that task.
Create animated symbols
Animate symbols in your app
These sessions show off how to create and annotate symbols for animation, and then how to use the annotations to trigger animations in your apps. Create animated symbols also shows off using symbol components to add modifiers to your custom symbols and get system like behavior with minimal effort. Animate symbols in your app shows off how the different animation types can be triggered and how they work in an app.
Explore SwiftUI animation
This video does a great job explaining how animations work in SwiftUI, in particular it diagrams how data flows through animations and that Animatable
and Animation
are in SwiftUI. It also shows off the new scoped animation modifiers, custom animations, and shows how to work with transactions.
Build better document-based apps
A good overview on new features for document based app. The code example was UIKit focused, showed off how much code you could remove from. Document based app and still integrate well with the system.
Create a more responsive camera experience
This covers how to use the new APIs for zero shutter lag, and deferred photo processing and explains how those settings work with the photos processing pipeline. It also explains how to work with reaction effects in video streams.
Embed the Photos Picker in your app
The headline of this video is that you can now embed an out of process photos picker in your app, there are a lot of other improvements set up to allow you set up your own interactions with that. It also shows the correct flags to use if you want to export HDR content instead of down
What’s new in text and text interactions
This shows off the changes to text interaction in the new OS versions, and how to take advantage of those new interactions. It also shows off new text features, and the one that caught my eye is support for lists in attributed strings.
Demystify SwiftUI performance
This session has lots of useful in-depth explanations of the view update cycle in SwiftUI, and explains some targeted optimizations that can be made to improve the rendering speed of SwiftUI views.
Explore pie charts and interactivity in Swift Charts
This shows off the new chart types added to Swift Charts, and also how to add new interactive behaviors. Having the ability to easily select and get more data on an element, and define scroll snapping makes Swift Charts now handle a lot of the use cases that previously required pulling in other libraries or doing lots of challenging work.
Go beyond the window with SwiftUI and
Elevate your windowed app for spatial computing
Another pair of sessions showing how to use the different visonOS scene types in SwiftUI, and how to integrate existing views into visionOS. One interesting item shown off in this session was how to creates meshes that can be displayed tracked to the users hands while in a fully immersive scene.
The SwiftUI cookbook for focus
This session walks through how the focus system works in SwiftUI, and explains how to use it in several common scenarios. Of particular interest, it explains how to automatically set keyboard focus for text views properly and also how to add focus behaviors to custom controls.
Animate with springs
An excellent overview of how and why to use spring based animations, and an explainer of the math behind the spring animations. It's also nice to see that since it's non-trivially complex to work with springs, Apple has been adding more affordances to the API to make them easier to reason about.
Modeling Progress
I finished the core of the kit that I've been working on, and have all of the accessories in various states of completed-ness. So primary assembly of that model is almost done, and then I'll have to decide what I'd like to do for extra detail work.
I also prepared the next kit that I'll be working on when I finished cutting out the last pieces from the sprues of the current kit. This kit is the second tier of complexity of kit, so there's more pieces and more colors of plastic. It's also an Evangelion instead of a Gundam, so it's a very different design of robot to work with.