SwiftUI empowers developers with powerful APIs to design user interfaces, making it easier than ever to create visually stunning screens that enhance the user experience (UX). Once these screens are crafted, the next step is to seamlessly connect them using navigation tools like NavigationView or NavigationStack . But here’s the catch: navigation logic can quickly spiral into a tangled mess as your app scales with more features and screens. The challenge lies in writing a clean, maintainable routing layer that keeps your codebase organized and easy to extend. To tackle this, adopting a dedicated routing layer is essential, especially when working with structured app architectures like VIPER or MVVM. In VIPER, routing plays a pivotal role as the "R" in the acronym. In MVVM, however, routing often takes a backseat in SwiftUI projects. This article introduces a simple yet effective approach to integrate a routing layer within SwiftUI, ensuring your app’s navigation logic rem...
Recently I published a countdown app . At one point of development - I have to show a timer on a UILabel which ticks on each seconds. As usual I started setting text to a label object - self .timerLabel.text = someString Easy piece of cake right !? But wait ... it won't take much user attention when timer ticks on every seconds. So I decided to make use of a simple animation while label gets text update. I found there are dozens of ways to animate a label. In this short article, I listed 3 best way you can animate text on a label. ( Spoiler Alert 👀- I decided to go with 3rd option) 1. Fade In - Fade out animation : CATransition class has got transition type `fade`. With timing function of CATransition - I was able to see the below result. let animation: CATransition = CATransition () animation.timingFunction = CAMediaTimingFunction (name: CAMediaTimingFunctionName .easeInEaseOut) animation.type = CATransitionType .fade animation.subtype = C...