Welcome to another issue!
Remaining iOS Conferences of 2024
I have compiled all the remaining iOS conferences in 2024 in one place in case you are planning on attending any:
- SwiftConf August 7thโ8th 2024 in Germany (Cologne) ๐ฉ๐ช
- Swift Island August 27th-29th 2024 in Netherlands (Texel) ๐ณ๐ฑ
- iOSDevUK September 2nd-5th 2024 in UK (Aberystwyth) ๐ฌ๐ง
- NSSpain September 18-19th 2024 in Spain (Logroรฑo) ๐ช๐ธ
- Swift Connection September 23rdโ24th 2024 in France (Paris) ๐ซ๐ท
- ServerSide.swift September 26thโ27th 2024 in UK (London) ๐ฌ๐ง
- SwiftLeeds October 8th-9th 2024 in UK (Leeds) ๐ฌ๐ง
- Pragma Conference October 29th-30th 2024 in Italy (Bologna) ๐ฎ๐น
- Do iOS November 12th-14th 2024 in Netherlands (Amsterdam) ๐ณ๐ฑ
Subscribe to another newsletter I run!
Nearly 4000 subscribers! ๐
Weekly newsletter featuring the best tools for iOS developers. Subscribe ๐ iOS Dev Tools Newsletter
Sponsored Link
Get a single source of truth for all your releases with Runway
The steady drip of endless manual tasks, repetitive questions in Slack, and distracting context switching can each seem small on their own but they add up to insidiously steal tons of engineering time and attention.
Coding
List or LazyVStack: Choosing the Right Lazy Container in SwiftUI
When dealing with large datasets in SwiftUI, List, and LazyVStack are the primary tools for efficient display. While they might seem similar, they have distinct characteristics and use cases.
- List: Better for large datasets, has built-in features like swipe actions and editing.
- LazyVStack: More flexible for custom layouts, but might be slower with huge datasets.
Understanding these differences will help you make informed decisions when building your SwiftUI apps.
Mastering ScrollView in SwiftUI. Scroll Visibility
SwiftUI now offers powerful tools to track the visibility of content within a scroll view. With onScrollTargetVisibilityChange, you can monitor which items in a list are currently visible, while onScrollVisibilityChange lets you track the visibility of individual views.
Both modifiers provide a threshold parameter to control when actions are triggered. These features enable you to optimize performance, load data efficiently, and create interactive experiences based on content visibility within your SwiftUI apps.
Using PreviewModifier to build a previewing environment
Xcode 16 introduces PreviewModifier, a powerful tool for building complex preview environments. This feature allows you to share data, apply custom styles, and create consistent previews across your project.
By understanding how to use makeSharedContext and body methods, you can effectively enhance your preview experience and streamline development.
visionOS
Creating advanced hover effects in visionOS
VisionOS introduces engaging hover effects to elevate user experiences. By skillfully combining standard hover effects we can customize buttons, tooltips, and tab bars for a better user experience.
This post explains the hoverEffect modifier, providing practical examples to guide you to define custom animations and hover behaviors for your visionOS applications.
Design
Blend Modes in SwiftUI
Blend modes let you combine layers in creative ways to achieve various visual effects. SwiftUI offers multiple blend modes like multiply, screen, overlay, and more.
By applying these modes to images, text, or shapes, you can create depth, shadows, highlights, and unique textures.
Other Cool Stuff
SwiftUI can be a bit... eager
SwiftUI handles view creation differently than AppKit or UIKit. This can lead to unexpected behavior with NavigationLink. This post shows how NavigationLink can eagerly create destination views even before they're needed.
Solutions:
- onAppear modifier: Delays view creation until it's displayed.
- NavigationLink(value:) (iOS 16+): Creates the view only when needed, improving performance.
Choose the right method based on your app's needs and the iOS version you support.
AI features in Xcode 16: is it good?
Xcode 16 introduces an exciting AI coding assistant that shows promise but still needs improvement. While it excels at basic code generation, it struggles with understanding complex code patterns and using the latest Swift APIs.
The assistant can quickly create boilerplate code and generate suggestions based on comments but needs better visual cues and the ability to provide multiple suggestions. It also requires enhanced knowledge of the latest Swift APIs to be truly helpful.
Bookmarking Xcode Project Search Results
Xcode lets you save your favorite search results for quick access later. This is helpful if you often search for the same thing.
To save a search:
- Find what you're looking for.
- Click "Bookmark" in the Edit menu.
You can refresh the results later and even change the bookmark name.
In Case You Missed It
Best vs. Worst Coding Practices in Swift: 20 Key Examples
This post explores 20 key practices to improve your Swift coding. It highlights both good and bad approaches for various aspects like:
- Error handling (using do-catch vs. force unwrapping)
- Optional handling (safe unwrapping vs. force unwrapping)
- Avoiding redundant code (code reuse with functions)
- Unit testing best practices (isolated and clear tests)
- Memory management (weak references to prevent memory leaks)
- Implementing dependency injection (for testability and flexibility), and many more.
Freebies
iOS Architect Free Crash Course
The iOS Architect Crash Course is free for a limited time. From July 22nd to 28th!
Learn how to become a complete senior developer and be one of the most wanted and highest-paid iOS devs in the world.
Key features:
- Hands-on refactoring of a real-world project
- Expert guidance on advanced iOS architecture and design patterns
- Boost your career and earning potential
Videos
Meet AccessorySetupKit
AccessorySetupKit makes setting up Bluetooth and Wi-Fi accessories a breeze. It lets you create beautiful pairing dialogs within your app, bypassing the need for the Settings app.
Plus, it enhances privacy by pairing accessories directly with your app and allows you to migrate existing accessories for seamless management.