我正在尝试UIImageView
使用CGAffineTransformMakeTranslation()
. 此动画将重复,直到用户执行滑动,在教程中移动用户。所有这些都已经在正常运行,如下所示:
[UIView animateWithDuration:1.0 animations:^ {
self.finger.alpha = 1.0;
}completion:^(BOOL finished) {
CGAffineTransform originalTransform = self.finger.transform;
[UIView animateWithDuration:1.0 delay:0.0 options:UIViewAnimationCurveEaseInOut animations:^ {
self.finger.transform = CGAffineTransformMakeTranslation(-200, 0);
self.finger.alpha = 0.0;
}completion:^(BOOL finished) {
self.finger.transform = originalTransform;
NSTimer *timer = [NSTimer timerWithTimeInterval:1.0 target:self selector:@selector(repeatSwipeAnimation1) userInfo:nil repeats:YES];
self.swipeTimerForFinger1 = timer;
NSRunLoop *runLoop = [NSRunLoop currentRunLoop];
[runLoop addTimer:self.swipeTimerForFinger1 forMode:NSDefaultRunLoopMode];
[self.swipeTimerForFinger1 fire];
}];
}];
和选择器:
-(void)repeatSwipeAnimation1 {
[UIView animateWithDuration:1.0 delay:0.0 options:UIViewAnimationCurveEaseIn animations:^ {
self.finger.alpha = 1.0;
}completion:^(BOOL finished) {
CGAffineTransform originalTransform = self.finger.transform;
[UIView animateWithDuration:1.0 delay:0.0 options:UIViewAnimationCurveEaseInOut animations:^ {
self.finger.transform = CGAffineTransformMakeTranslation(-200, 0);
self.finger.alpha = 0.0;
}completion:^(BOOL finished) {
self.finger.transform = originalTransform;
}];
}];
}
手指动画和翻译精美。
当我想用不同的手指和不同的计时器来做这件事时,问题就来了。我有相同的确切代码,但它是不同的手指和不同的计时器选择器。
发生的事情是计时器的选择器不会翻译 UIImageView,并且(更可怕的)当我调用该方法无效时,计时器不会无效。调试后,我看到第二个计时器正在调用第二个选择器,但只是没有表现(例如,没有翻译,第二个手指淡入太快)。
我假设我第一次调用 NSRunLoop 时需要以某种方式关闭它?这是第一次使用 NSRunLoop,所以我为我的无知道歉。任何帮助都非常有用。