Going through https://developer.apple.com/tutorials/sample-apps
| Image | Tutorial | Learnings |
|---|---|---|
| About me | Tabs, Data model, modifiers, aspect ratios | |
| Choose your own story | Navigation view, links, popping to root has many different solutions | |
| Date planner | StateObject, EnvironmentObject, foregroundStyle, Identifiable, split view navigation and placeholder labels, trailing commas on lists | |
| Organising with Grids | Honeycomb grid layout | |
| Editing Grids | Dynamic number of items per row, Pluraliser, EditButton |
|
| Image Gallery | AsyncImage, PhotoPicker, Task { @MainActor in } syntax |
|
| Meme Creator | @MainActor on class level warning and workaround, async await for network calls, FetchError enum for custom error handling, a11y on images |
|
| Bubble Level | CoreMotion, beginGeneratingDeviceOrientationNotifications, device orientation handling, blendModes plusLighter and difference, tuple declaration syntax (roll, pitch) = |
|
| Seismometer | Canvas, rotationEffect anchor, Slider min and max value labels |
|
| Recognizing Gestures | simultaneousGesture to satisfy multiple conflicting gestures (magnify and rotation), Tap, LongPress, Drag, Rotation Magnification gestures, GestureState, randomize range syntax CGFloat.random(in: 40...250) |
|
| Animating Shapes | Experimentation with animations to create explosions, etc |