Я хочу получить позицию представления во время его анимации и перемещения из одной позиции в другую.
Я пытался использовать presentationLayer, чтобы получить информацию о местоположении действия,
и попытался распечатать местоположение, когда UIView движется.
Вот что печатает:
2010-12-08 16:56:50.496 Exp[31219:207] point: NSPoint: {45, 45}</p>
<p>2010-12-08 16:56:50.696 Exp[31219:207] point: NSPoint: {45, 45}</p>
<p>2010-12-08 16:56:50.896 Exp[31219:207] point: NSPoint: {45, 45}</p>
<p>2010-12-08 16:56:51.096 Exp[31219:207] point: NSPoint: {45, 45}</p>
<p>2010-12-08 16:56:51.296 Exp[31219:207] point: NSPoint: {45, 45}</p>
<p>2010-12-08 16:56:51.496 Exp[31219:207] point: NSPoint: {245, 245} <<----------------------------------------</p>
<p>2010-12-08 16:56:51.696 Exp[31219:207] point: NSPoint: {245, 245}</p>
<p>2010-12-08 16:56:51.896 Exp[31219:207] point: NSPoint: {245, 245}</p>
<p>2010-12-08 16:56:52.096 Exp[31219:207] point: NSPoint: {245, 245}
обратите внимание на стрелку, конечная точка распечатывается напрямую, без указания точек на пути. Кто-нибудь может помочь?
ниже мой код:
Вот как это печатается:
-(void)print</p>
<p>{
NSLog([NSMutableString stringWithFormat:@"point: %@",[NSValue valueWithCGPoint:((CALayer *)[bomb.layer presentationLayer]).position]]);<br>
}
Я использовал таймер для многократной распечатки анимированного представления «Бомба»
-(id)initWithCoder:(NSCoder *)aDecoder</p>
<p>{
if (self=[super initWithCoder:aDecoder]) {</p>
<pre><code> bomb = [[BombView alloc]init];
bomb.frame = CGRectMake(30, 30, 30, 30);
bomb.backgroundColor = [UIColor yellowColor];
[self addSubview:bomb];
timer = [NSTimer timerWithTimeInterval:PRINTINTERVAL // defined to be 0.2
target: self
selector: @selector(print)
userInfo: nil
repeats: YES];
[[NSRunLoop currentRunLoop] addTimer:timer forMode: NSDefaultRunLoopMode];
}
return self;
}
Вот как это анимировано:
-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event</p>
<p>{</p>
<pre><code> CABasicAnimation * animation = [CABasicAnimation animationWithKeyPath:@"position"];
animation.duration = 10.0;
animation.delegate = bomb;
[bomb.layer addAnimation:animation forKey:@"animatePosition"];
bomb.center = CGPointMake(bomb.center.x+200, bomb.center.y+200);
}
когда я нажимаю, «бомба» будет двигаться, и распечатанная информация должна постепенно меняться. Потому что он движется с такой низкой скоростью в течение 10 секунд.
Движется нормально, но печатается неправильно.