How to Handle Tap Gestures on Widgets?
If you’ve interacted with widgets before, you may have noticed that they all have a default behavior when tapped, which is to launch the host app. However, it’s important to know that this behavior...
View ArticleHow to Hide Sensitive Widget Data When Device Is Locked?
With the introduction of widgets in iOS, users can now easily access information from their favorite apps right at the lock screen and Today View. As good as it might seem, this does introduce privacy...
View ArticleHow to Create Custom Redacted Effects on Widgets?
In my previous article, we talked about how we can protect our users’ privacy by redacting widget data. It’s a simple process, but unfortunately, there aren’t many options available when it comes to...
View ArticleHow to Use UIHostingConfiguration to Integrate SwiftUI Views into UIKit Apps
Since the release of SwiftUI in 2019, Apple has been striving to enhance the interoperability between SwiftUI and UIKit. In iOS 16, Apple introduced UIHostingConfiguration, which is a powerful feature...
View ArticleHow to Define Custom URL Actions for SwiftUI Text Views
With the release of iOS 15, Apple has introduced native markdown support to the SwiftUI Text view. This feature allows developers to easily create strings with hyperlinks that can open websites, send...
View ArticleHandling WebP Images When Using PHPickerViewController
This week, I worked on a feature that required integration with the PHPickerViewController. Everything went well until I noticed that some of the selected images failed to convert into UIImage in the...
View Article5 Simple Steps to Find Slow Code Using Xcode Time Profiler
Xcode Time Profiler is a powerful performance analysis tool provided by Apple. It is specifically designed to help developers optimize the performance of their iOS, macOS, watchOS, and tvOS...
View ArticleHow to Handle Empty States Using UIContentUnavailableConfiguration
⚠️ Information in this article is based on the Xcode 15 beta 1 release and may be subject to change. In this year WWDC (WWDC23), Apple surprised developers with an unexpected improvement to UIKit. The...
View ArticleHow to Create Callback-like Behavior Using AsyncStream in Swift
Without a doubt, Swift Concurrency has revolutionized the way we handle asynchronous code in Swift. One powerful component of it is AsyncStream, a specialized form of AsyncSequence that is well-suited...
View ArticleUnderstanding Container Background for Widget in iOS 17
In the upcoming iOS 17 update, Apple once again expanded the use of widgets, making them available in more places, including the iPad lock screen and iPhone standby mode. However, this update brings a...
View ArticleMy Journey to the Stage of iOS Conf SG 2024
How It All Began Back in January 2023, I attended iOS Conf SG 2023, marking my first-ever iOS conference experience. The conference was amazing, but one particular moment stood out. It was when Paul...
View Article