-
Notifications
You must be signed in to change notification settings - Fork 3k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[$250] IOS - Avatar doesn't get back to its original center position after zooming in and out #53471
Comments
Triggered auto assignment to @greg-schroeder ( |
Job added to Upwork: https://www.upwork.com/jobs/~021863989062279850488 |
Triggered auto assignment to Contributor-plus team member for initial proposal review - @abdulrahuman5196 ( |
Upwork job price has been updated to $125 |
Hi! I came across your job posting on Upwork regarding the avatar centering issue in your iOS app. After analyzing the problem where the avatar doesn't return to center after zoom gestures, I believe this can be fixed effectively through iterative solutions. I am a full time full stack iOS developer, designer and game developer at MagicHabits. This can be fixed in max 1-2 days. Based on my experience with iOS gesture handling and UI animations, I've identified 5 potential approaches that could solve this: Spring Animation Reset swiftCopyUIView.animate(withSpringDamping: 0.8) { Velocity-Based Repositioning swiftCopylet velocity = gesture.velocity(in: view) Smart Edge Detection swiftCopyif !safeBounds.contains(avatar.frame) { Progressive Center Force swiftCopylet centerForce = 1 - currentScale Physics-Based Boundaries swiftCopylet behavior = UIAttachmentBehavior(item: avatarImageView) I suggest implementing Solution #1 (Spring Animation Reset) first, then enhancing it with elements of Solution #4 (Progressive Center Force). This combination would: Provide immediate improvement in UX Let me know if you like it so I can submit a proposal on upwork! |
📣 @ahmedkhan28! 📣
|
Contributor details |
✅ Contributor details stored successfully. Thank you for contributing to Expensify! |
Edited by proposal-police: This proposal was edited at 2024-12-20 10:33:27 UTC. ProposalPlease re-state the problem that we are trying to solve in this issue.Avatar doesn't get back to its original center position after zooming in and out What is the root cause of that problem?The root cause of this problem is that recentering the avatar is only done if the zoom scale is less than the minimum zoom scale or more than the maximum zoom scale. When zoomed past the minimum zoom, it recenters and adjusts the zoom: overzoomed.mp4When zoomed past the maximum zoom, it does the same (may be difficult to see here) output.mp4If it's not a maximum or minimum zoom, there is no recenter, this allows the user move the avatar in any direction without it recentering Recording.at.2024-12-20.11.06.43.mp4The line of code that helps the zoom recenter after minimum or maximum zoom can be found here: App/src/components/MultiGestureCanvas/usePinchGesture.ts Lines 164 to 168 in 207622d
What changes do you think we should make in order to solve the problem?We should modify the The logic should be added in the zoom scale, we need to set the zoom scale to the maximum
pinchScale.set(zoomRange.max);
zoomScale.set(withSpring(zoomRange.max, SPRING_CONFIG, triggerScaleChangedEvent));
} else {
+ // Ensure image is centered
+ offsetX.set(withSpring(0, SPRING_CONFIG));
+ offsetY.set(withSpring(0, SPRING_CONFIG));
// Otherwise, we just update the pinch scale offset
pinchScale.set(zoomScale.get());
triggerScaleChangedEvent();
}
}); What specific scenarios should we cover in automated tests to prevent reintroducing this issue in the future?N/A, It's a UI issue What alternative solutions did you explore? (Optional)N/A Resultcompressednormalxoom.mp4 |
📣 @JoshIri360! 📣
|
Contributor details |
✅ Contributor details stored successfully. Thank you for contributing to Expensify! |
Submitted the proposal just now, thank you! |
Next up is proposal review |
@greg-schroeder, @abdulrahuman5196 Huh... This is 4 days overdue. Who can take care of this? |
We had to have a contract before me solving it, right?
…On Mon, 9 Dec 2024 at 2:42 PM, melvin-bot[bot] ***@***.***> wrote:
@greg-schroeder <https://github.com/greg-schroeder>, @abdulrahuman5196
<https://github.com/abdulrahuman5196> Huh... This is 4 days overdue. Who
can take care of this?
—
Reply to this email directly, view it on GitHub
<#53471 (comment)>,
or unsubscribe
<https://github.com/notifications/unsubscribe-auth/BACMSUPE6HB5SRTCJIZO6OL2EVQXXAVCNFSM6AAAAABS54WRMOVHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMZDKMRXGQYTKMZZG4>
.
You are receiving this because you were mentioned.Message ID:
***@***.***>
|
Hi, will review today |
Thanks @abdulrahuman5196 |
@ahmedkhan28 / @JoshIri360 Kindly follow the proposal template for suggesting solutions as mentioned here https://github.com/Expensify/App/blob/main/contributingGuides/CONTRIBUTING.md#propose-a-solution-for-the-job And on another not @JoshIri360 I tried your solution and its not fixing the issue. I am still able to repro the issue with your solution. |
No pending proposal to review or approve yet |
Will check the updated in my morning |
📣 It's been a week! Do we have any satisfactory proposals yet? Do we need to adjust the bounty for this issue? 💸 |
@greg-schroeder, @abdulrahuman5196 Whoops! This issue is 2 days overdue. Let's get this updated quick! |
@greg-schroeder @abdulrahuman5196 this issue is now 4 weeks old, please consider:
Thanks! |
@greg-schroeder, @abdulrahuman5196 Still overdue 6 days?! Let's take care of this! |
📣 It's been a week! Do we have any satisfactory proposals yet? Do we need to adjust the bounty for this issue? 💸 |
@JoshIri360 I still don't agree on the rootcause
I am seeing this issue even on other normal zoom cases occasionally as well |
@greg-schroeder, @abdulrahuman5196 Eep! 4 days overdue now. Issues have feelings too... |
Still awaiting viable proposals per the above |
📣 It's been a week! Do we have any satisfactory proposals yet? Do we need to adjust the bounty for this issue? 💸 |
What do you think @abdulrahuman5196 - raise bounty here? |
@greg-schroeder, @abdulrahuman5196 Uh oh! This issue is overdue by 2 days. Don't forget to update your issues! |
I'll raise the bounty |
Upwork job price has been updated to $250 |
Updated bounty to generate more interest |
ProposalPlease re-state the problem that we are trying to solve in this issue.The avatar image does not get back to original position after composition of pinch and pan gestures, when leaving one of the fingers out of the canvas area. What is the root cause of that problem?Inadequate handling when a touch pointer leaves the screen. The pinch gesture is being interrupedt by the Explanation:The pinch gesture is defined as follow, in const pinchGesture = Gesture.Pinch()
.enabled(pinchEnabled)
/// ....... The following part of the code disable the pinch gesture: .onChange((evt) => {
// Disable the pinch gesture if one finger is released,
// to prevent the content from shaking/jumping
if (evt.numberOfPointers !== 2) {
runOnJS(setPinchEnabled)(false);
return;
} When a touch pointer leaves the screen, the pinch gesture does not end properly, and the accumulated transformations are not finalized. Specifically on iOS, when a touch leaves the screen, the gesture may not trigger What changes do you think we should make in order to solve the problem?The simplest solution would be wrap the Additional fixes:
A fix would be just replace ResultVideo.2025-01-17.at.15.51.29.mp4What specific scenarios should we cover in automated tests to prevent reintroducing this issue in the future?NA |
If you haven’t already, check out our contributing guidelines for onboarding and email contributors@expensify.com to request to join our Slack channel!
Version Number: 9.0.70-2
Reproducible in staging?: Y
Reproducible in production?: Y
If this was caught on HybridApp, is this reproducible on New Expensify Standalone?: Y
If this was caught during regression testing, add the test name, ID and link from TestRail: https://expensify.testrail.io/index.php?/tests/view/5291133
Email or phone of affected tester (no customers): nathanmulugetatesting+2272@gmail.com
Issue reported by: Applause - Internal Team
Action Performed:
Expected Result:
The position of the avatar gets back to its original center position
Actual Result:
The avatar stays at the position it was released on and doesn't get back to the center
Workaround:
Unknown
Platforms:
Which of our officially supported platforms is this issue occurring on?
Screenshots/Videos
Add any screenshot/video evidence
Bug6683084_1733231204767.ScreenRecording_12-03-2024_15-58-36_1.1.mp4
View all open jobs on GitHub
Upwork Automation - Do Not Edit
The text was updated successfully, but these errors were encountered: