
A detailed breakdown of five core SwiftUI gestures. TapGesture with count and coordinateSpace parameters. LongPressGesture with minimumDuration, onPressingChanged, and maximumDistance. DragGesture with .onChanged, .onEnded, and an advanced version using .updating with @GestureState, explaining value, state, and transaction parameters. MagnifyGesture with magnification and velocity. RotationGesture using two @State properties (currentAngle and finalAngle) to preserve rotation after the gesture ends. A separate section on gesture composition: .map for transforming data, .simultaneously for parallel execution (unwrapping optional .first and .second), and .sequenced for sequential gestures (switch statement on the enum).
The library brings native like swipe actions to ScrollView based lists (LazyVStack, Grid) where SwiftUI's native swipeActions do not work. Version 2.0 adds vertical swipe gestures from top and bottom edges, not just leading and trailing. It uses a familiar syntax (awesomeSwipeActions) with full UI customization via AwesomeSwipeButton or custom views. The AwesomeSwipeCoordinator keeps only one row open at a time and provides programmatic control (openRowID, close, open) for tutorials, async flows, or undo logic.
The article explains the three property wrappers for ObservableObject in SwiftUI. @StateObject creates and owns the instance, keeping it alive across view redraws. @ObservedObject is for passing an already owned instance to child views. @EnvironmentObject injects an object implicitly into a view hierarchy to avoid prop drilling. The article also covers the iOS 17 shift to the @Observable macro, which replaces @StateObject and @ObservedObject with @State, eliminates @Published, and enables granular dependency tracking (only views that read a specific property redraw when it changes).
Pavel Andreev is a Senior iOS Engineer with over 5 years of hands on experience building robust and user friendly iOS applications. He is proficient in Swift, Objective C, SwiftUI, UIKit, Combine, Core Data, Core Animation, and Core Graphics. Pavel works with architectures like MVVM and Clean Architecture, dependency injection using Swinject and Factory, and concurrency tools including Async/Await, Combine, Operation Queues, and GCD. He also has strong experience with state management, networking via RESTful APIs, MQTT, WebSocket, and URLSession, as well as CI/CD tools like GitHub Actions and Fastlane. Beyond development, Pavel actively shares his knowledge through articles on Medium, DZone, HackerNoon, and Hashnode, and runs the SwiftyForge YouTube channel.
Join the Mobile Signal Talent Directory and make your profile visible to hiring teams searching for iOS talent.