Welcome to another issue!
As WWDC approaches, I offered Christian aka wallpaper wizard to create something for developers.
Christian came up with the idea that it would be fun to play around with syntax highlighting. Rather than generate something a bit more intricate with AI, he made 59 gradient wallpapers blending the editor background color and the accent color of various code elements.
These 5 collections are a tribute to 5 common source editor themesβDefault Dark, Default Light, Classic Dark, Classic Light, and of course, Midnight.
With a resolution of 6000x6000 pixels, these FREE wallpapers can be used across your desktop, tablet, or phone.
Sponsored Link
A CI/CD for mobile dev teams trusted by 150,000+ developers
Automate the whole build, test, and release pipeline of your iOS apps to get to the market 20% faster.
Swift Around the Web
@_spi or How to develop better APIs in Swift
Public APIs often contain features meant for specific clients or internal development. These features clutter the main API and can't be easily restricted. The @_spi attribute (experimental in Swift) allows developers to mark methods as internal to specific clients.
Benefits:
- Encapsulation: Keeps internal APIs hidden.
- Selective Exposure: Exposes specific APIs to specific modules.
- API Stability: Allows internal experimentation without affecting public APIs.
Note: @_spi is experimental, but its use is becoming common practice for creating SPIs in Swift.
Coding
Swift Package Manager framework creation in Xcode
Explore Swift Package Manager (SPM), Apple's recommended approach for managing dependencies in Swift projects.
Key Points:
- Create and manage Swift packages using the terminal or Xcode.
- Customize packages with details like supported platforms, dependencies, and resources.
- Leverage Bundle.module to access bundled resources within your code.
- Publish packages by tagging your Git repository (consider listing on the Swift Package Index).
SPM is the future of dependency management in Swift development. It offers features like version control and custom flags for granular control.
Programmatic navigation in SwiftUI with NavigationPath and navigationDestination
Before iOS 16, programmatic navigation in SwiftUI was limited. This article explores NavigationPath, a new feature that lets you control navigation using data (models) instead of just views.
With NavigationPath, you can link the button action to the exercise model, and SwiftUI handles the navigation automatically.
Creating Settings Screen in SwiftUI With AppStorage
Learn how to create a settings screen in SwiftUI that saves user preferences between app launches using AppStorage.
Key Points:
- Persist user data like name, address, and ad preferences.
- Use @AppStorage to link SwiftUI views with UserDefaults.
- Conditionally display settings sections based on user choices.
- Manage different data types (String, Bool, enum) with AppStorage.
The article includes code breakdowns and warnings about using UserDefaults responsibly.
Design
Hiding actions in buttons with UIKit
Create a button with hidden actions that appear on a long press (like Instagram share) with an animation.
- Long press reveals options: Hold down the button to see hidden choices pop up with a cool animation.
- Customize it: This works on any button and lets you define your own options and actions.
This approach allows for flexible button interactions with hidden actions in UIKit apps.
How to build segmented circular progress views in SwiftUI with Swift Charts
This guide shows you how to build a segmented circular progress bar in your app using SwiftUI. This is perfect for visualizing a 7-day app rollout.
Other Cool Stuff
mise en place Xcode
Mise, a polyglot tool version manager that simplifies managing tools like swiftlint and Ruby versions across development teams and CI pipelines.
- Define tool versions in a .mise.toml file.
- mise install downloads and installs the specified version.
- mise x <tool> executes the tool using the correct version.
Mise integrates with Xcode run scripts, GitHub Actions, and eliminates the need for separate version managers like rvm or jenv. Overall, Mise streamlines tool version management, promoting cleaner and more maintainable project setups.
W.W.D.C. 2024: The Pregame Quiz
This post is a fun trivia quiz to test your knowledge about Apple's Worldwide Developers Conference (W.W.D.C.) and its history.
Three rounds with increasing difficulty (1, 2, and 3 points per question). Each round has an optional wildcard question worth 4 points (correct) or -2 points.
Answer key included at the end of the post. This quiz is a great way for Apple developers to prepare for the upcoming W.W.D.C.
In Case You Missed It
Observation Framework for SwiftUI
Imagine building an app with moving parts. SwiftUI's Observation Framework (iOS 17+) makes keeping those parts in sync smoother.
Here's the update:
- Less Code: No more repetitive @Published notes needed.
- Faster Apps: Updates happen only when necessary.
- Cleaner Code: Easier to write and understand.
This is great for anyone who builds apps with SwiftUI, especially those who want to make them run faster and be easier to maintain.
Videos
A Roadmap For Learning Vision Pro Development
A step-by-step guide for learning apps for Apple's VisionOS, the operating system for the Vision Pro headset.
Beginner-friendly roadmap to guide you through the essential skills and knowledge you'll need to become a VisionOS developer.
Books
App Store Optimization eBooks (FREE)
Matteo Spada wrote 2 free ebooks that teach you everything you need to know about App Store Optimization.
Grab it now!