Recommended Way to Implement Digital Crown Zoom + Drag for Images on watchOS

I’m trying to implement smooth zoom and drag interactions for an image on watchOS—similar to the Photos app. DTS recommended using digitalCrownRotation + scaleEffect in SwiftUI, and ChatGPT also suggests a similar approach. However, the experience still isn’t as smooth or polished as the Photos app.

Before I commit fully to this direction, I want to confirm: 1. Is SwiftUI with digitalCrownRotation, scaleEffect, and DragGesture the officially recommended approach for zoom + pan on watchOS? 2. Is there any public API that provides built-in Photos-style behavior, or is a custom SwiftUI implementation expected? 3. Are there best-practice patterns for smooth scaling, maintaining image bounds, and constrained panning?

Thanks for any guidance

Yeah, SwiftUI is the officially recommended UI framework for watchOS app development. This is mentioned in TN3157.

I don't see any system-provided API that provides a view behaving like Photos. That's something you need to implement in your app.

Regarding the best practices, folks who have something to say may weigh in, but I think the ask is quite broad. I guess you might go ahead to create a prototype, and follow up here if you see any specific issue along the path.

Best,
——
Ziqiao Chen
 Worldwide Developer Relations.

Recommended Way to Implement Digital Crown Zoom + Drag for Images on watchOS
 
 
Q