SwiftyCrop
SwiftyCrop copied to clipboard
add support for macOS
- Adds internal typealias
PlatformImagethat uses UIKit or AppKit depending on what it can import - Correctly applies UIKit/AppKit function
- Adds support for macOS to the demo (tested as well)
Theoretically, magnification and rotation should work on macOS but doesn't for some reason (and doesn't throw any errors either). I might update both gesture to their newer counterparts
Welp. This is randomly working/not-working. I need to investigate a bit more
I think the issue of sometimes working is already addressed in the README and was discussed in #13
Two solutions I have come up with to enable zoom on macOS:
- Manual scroll wheel event handler
private func handleScrollEvent(_ event: NSEvent) {
let currentTime = Date()
let timeDifference = currentTime.timeIntervalSince(lastScrollTime)
if timeDifference > 0.1 {
scrollMagnitude = 0
}
scrollMagnitude += event.deltaY
let scaleFactor: CGFloat = 1 + (scrollMagnitude * 0.001)
handleMagnification(value: MagnificationGesture.Value(scaleFactor))
viewModel.lastScale = viewModel.scale
viewModel.lastOffset = viewModel.offset
lastScrollTime = currentTime
}
- Add Command + and Command - shortcut
private func handleKeyEvent(_ event: NSEvent) {
if event.modifierFlags.contains(.command) {
switch event.keyCode {
case 24: // Command +
handleMagnification(value: MagnificationGesture.Value(1.1))
viewModel.lastScale = viewModel.scale
viewModel.lastOffset = viewModel.offset
case 27: // Command -
handleMagnification(value: MagnificationGesture.Value(0.9))
viewModel.lastScale = viewModel.scale
viewModel.lastOffset = viewModel.offset
default:
break
}
}
}
Thanks for the PR and effort @navanchauhan! I've been pretty busy these past days but I will take a detailed look at your code and test it soon!
@navanchauhan I have another suggestion how to solve the zooming issue on Mac:
- Maybe showing buttons (e.g. "+" and "-") when cropping an image to zoom accordingly is easiest.
Especially since it is intuitive. As a user I might not be familiar with the cmd option and also not have a mouse wheel. This might be the easiest solution to the issue. What do you think?
That is a really good suggestion. While I am at it, I might even add buttons for rotating the image
I was able to fix the issue where the circular crop was not working properly on macOS. Now, I just need to add buttons and clean up the code a bit.
I should have time this next week (or this weekend itself) to clean up and commit
@navanchauhan hey it's been a while 😅 any update on your behalf for this issue?