У меня очень простая проблема, но я не могу найти причину этой ошибки.Любые идеи приветствуются.
Итак, у меня есть объект UIImageView
, и я перемещаю его (перемещаю) из точки A (x1, y1) в точку B (x2, y2) в точку C (x2, y2) и т. Д.на ....
Когда я перемещаю его из A в B в C в D и так далее ... БЕЗ АНИМАЦИИ, это работает!
Когда я перемещаю его из A в B в C .... и так далее ... С АНИМАЦИЕЙ -> Есть ошибка! Только от A доB работает, B - C, ... и т. Д. Появляется в другом месте.
Я в основном реализую метод touchesBegan
и touchesEnd
и перемещаю объект в новое местоположение с помощью
//NO ANIMATION ==> Works !
-(void) touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event {
NSLog(@"End of touch");
UITouch *touch = [[event touchesForView:self.view] anyObject];
CGPoint location = [touch locationInView:touch.view];
object.center = CGPointMake(location.x, location.y);
}
..
//ADDING ANIMATION ==> Bug !
-(void) touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event {
NSLog(@"End of touch");
UITouch *touch = [[event touchesForView:self.view] anyObject];
CGPoint location = [touch locationInView:touch.view];
[self spinLayer:object.layer duration:1 direction:SPIN_CLOCK_WISE newFrame:location];
tempFrame = location; // tempFrame is global.
}
И в конце анимации я делаю
- (void)animationDidStop:(CAAnimation *)theAnimation finished:(BOOL)flag {
object.center = tempFrame;
// I assign this because the object has to be updated to its new location to move it to points B, C, D and so forth...
// The object is actually at the desired point. But it appears on the SCREEN at a different location although it `NSLogs` at the right point.
}
Это ошибка:
Когда я назначаю object.center = tempFrame;
, я ожидаю, что объект будет в (x2, y2).Технически это в (x2, y2) (когда я NSlog
местоположение, я узнал), но это появляется в другом месте на экране.
Если я снова переместлю его в точку C, он использует (x2, y2) и правильно переместится в (x3, y3), но он снова появится где-то на экране!
Любые идеи??????