gpt4 book ai didi

iphone - iPad:用动画移动 UIView,然后将其移回来

转载 作者:行者123 更新时间:2023-12-03 20:48:53 25 4
gpt4 key购买 nike

我在 UIView 子类中有以下代码,它将通过动画将其移出屏幕:

float currentX = xposition; //variables that store where the UIView is located
float currentY = yposition;

float targetX = -5.0f - self.width;
float targetY = -5.0f - self.height;

moveX = targetX - currentX; //stored as an instance variable so I can hang on to it and move it back
moveY = targetY - currentY;

[UIView beginAnimations:@"UIBase Hide" context:nil];
[UIView setAnimationDuration:duration];
self.transform = CGAffineTransformMakeTranslation(moveX,moveY);
[UIView commitAnimations];

效果非常好。我已将 targetX/Y 更改为 0 以查看它是否确实移动到指定点,结果确实如此。

问题是当我尝试将 View 移回原来的位置时:

moveX = -moveX;
moveY = -moveY;

[UIView beginAnimations:@"UIBase Show" context:nil];
[UIView setAnimationDuration:duration];
self.transform = CGAffineTransformMakeTranslation(moveX,moveY);
[UIView commitAnimations];

这使得 UIView 的距离达到了应有的 3 倍。因此 View 通常会被推迟到屏幕的右侧(取决于它所在的位置)。

CGAffineTransforMakeTranslation 函数有什么我应该知道的吗?我阅读了文档,据我所知,它应该执行我期望的操作。

有人建议如何解决这个问题吗?谢谢。

最佳答案

分配给变换将导致旧的变换消失。要返回到原始位置,请为其分配恒等变换。

self.transform = CGAffineTransformIdentity;

(或者更好的是,只需更改 .frame 而不是更改 .transform。)

关于iphone - iPad:用动画移动 UIView,然后将其移回来,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2899067/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com