Add zoom and scroll capabilites to Image with swift

ScrollableImage

SwiftUI Image + ScrollView + Zoom + Drag.

Demo

Todo

  • [ ] Figure out why the ScrollView isn't wraping the Image bounds
  • [ ] Horizontal scroll sometimes doesn't work after zooming in
  • [ ] Scrolling left cause Image to be offset and not re-centered
  • [ ] Zoom out fast causes Image offset to the left, need to re-center
  • [ ] Add ablity to hide grid
  • [ ] Support for different aspect ratio changes on Image
  • [ ] Add double tap gesture to zoom on Image
  • [ ] Make parms to ScrollableImage optional

Usage

Add the package to Xcode https://github.com/gtokman/ScrollableImage.git and target the main branch, no officail release yet.

var body: some View {
  ScrollableImage(isScrolling: $isScrolling, offset: $offset) {
      ScrollView(.horizontal) {
          Image("name")
              .resizable()
              .aspectRatio(4/5, contentMode: .fit)
              .getRect(binding: $rect)
      }
   }
}

Contribute

Contributions are warmly welcomed! Feel free to reference the todos above or file an issue.

  1. Clone repo, double click the Package.swift to open the project
  2. Navigate to sources directory, theres a test image dir, helper dir, and file for the scrollable image code.
  3. The preview works in the ScrollableImage.swift if you want to see your changes live.
  4. Open a PR ?

GitHub

https://github.com/gtokman/ScrollableImage