gpt4 book ai didi

objective-c - Imageview 的 "touch area rect"在动画移动到其他地方后仍然保留

转载 作者:行者123 更新时间:2023-11-29 04:33:44 25 4
gpt4 key购买 nike

我正在使用 CABasicAnimation 移动图像,但我注意到它的触摸事件矩形保留在原来的位置 - 如何更新矩形,使其不会在错误的位置注册?

CABasicAnimation *theAnimation; 
theAnimation=[CABasicAnimation animationWithKeyPath:@"transform.translation.x"];
theAnimation.duration=0.3;
theAnimation.repeatCount=0;
theAnimation.fillMode = kCAFillModeForwards;
theAnimation.removedOnCompletion = NO;
theAnimation.autoreverses=NO;
theAnimation.fromValue=[NSNumber numberWithFloat:0];
theAnimation.toValue=[NSNumber numberWithFloat:-rect.size.width*0.9];
[self.layer addAnimation:theAnimation forKey:@"animateLayer"];

最佳答案

在这种情况下,您需要移动 UIImageViewTouchImageView 子类,而不是 self.layer。后者是一个较低级别的绘图表面,但不处理触摸事件等。

来自iPad: Move UIView with animation, then move it back ,这里有一些改编的代码,可以像您一样为 translation 属性设置动画:

CGFloat moveX = -rect.size.width*0.9;
CGFloat moveY = 0;

[UIView beginAnimations: @"Move View" context:nil];
[UIView setAnimationDuration: 0.3 ];
self.transform = CGAffineTransformMakeTranslation(moveX,moveY);
[UIView commitAnimations];

但是,您应该能够通过仅更改 View 的框架来简化此操作:

CGRect newFrame = self.frame;
newFrame.x -=rect.size.width*0.9;

[UIView beginAnimations: @"Move View" context:nil];
[UIView setAnimationDuration: 0.3 ];
self.frame = newFrame;
[UIView commitAnimations];

关于objective-c - Imageview 的 "touch area rect"在动画移动到其他地方后仍然保留,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11342100/

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