CABasicAnimation不会与View的其余部分一起滚动

时间:2010-05-21 22:45:17

标签: iphone caanimation

所有,我正在努力重现地图用来显示你自己位置的脉冲蓝圈效果......
我将UIView分层放在MKMapView上。 UIView包含脉冲动画。

我最终使用了以下代码,这些代码来自stackoverflow上的众多答案:

    CABasicAnimation* pulseAnimation = [CABasicAnimation animationWithKeyPath:@"opacity"];
pulseAnimation.toValue = [NSNumber numberWithFloat: 0.0];
pulseAnimation.duration = 1.0;
pulseAnimation.repeatCount = HUGE_VALF;
pulseAnimation.autoreverses = YES;
pulseAnimation.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut];
[self.layer addAnimation:pulseAnimation forKey:@"pulseAnimation"];

CABasicAnimation* resizeAnimation = [CABasicAnimation animationWithKeyPath:@"bounds.size"];
resizeAnimation.toValue = [NSValue valueWithCGSize:CGSizeMake(0.0f, 0.0f)];
resizeAnimation.fillMode = kCAFillModeBoth;
resizeAnimation.duration = 1.0;
resizeAnimation.repeatCount = HUGE_VALF;
resizeAnimation.autoreverses = YES;
resizeAnimation.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut];
[self.layer addAnimation:resizeAnimation forKey:@"resizeAnimation"];

这是一个可接受的脉冲/褪色圆圈的工作我在UIView中使用:

        CGContextRef context = UIGraphicsGetCurrentContext(); 

    CGContextSetRGBStrokeColor(context, 1.0, 0.0, 0.0, 0.4);
    // And draw with a blue fill color
    CGContextSetRGBFillColor(context, 1.0, 0.0, 0.0, 0.1);
    // Draw them with a 2.0 stroke width so they are a bit more visible.
    CGContextSetLineWidth(context, 2.0);

    CGContextAddEllipseInRect(context, CGRectMake(x-30, y-30, 60.0, 60.0));
    CGContextDrawPath(context, kCGPathFillStroke);

但我很快发现,虽然这似乎有效,但只要我将基础地图拖到另一个位置,动画就会搞砸...... 虽然我想要突出显示的位置在屏幕上居中,但是动画工作正常,一旦我拖动了位置,所以它不再居中动画现在从屏幕中心开始的脉冲放大到中心位置偏离中心位置,又回来了...... 幽默而酷炫的效果,但不是我想要的。

我意识到我可能在几个方面都很幸运。 我不确定我误解了什么。 我认为动画正在缩放整个图层,恰好在我的中间绘制了我的圆圈。所以它在居中时起作用,但在偏离中心时起作用。

当我开始提出这个问题时,我尝试了以下从stackoverflow建议的一个问题中收集的内容:

        CABasicAnimation* translateAnimation = [CABasicAnimation animationWithKeyPath:@"position"];
    translateAnimation.fromValue = [NSValue valueWithCGPoint:CGPointMake(oldx, oldy )];
    translateAnimation.toValue = [NSValue valueWithCGPoint:CGPointMake(x, y )];

// translateAnimation.fillMode = kCAFillModeBoth;         translateAnimation.duration = 1.0;         translateAnimation.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut];         [self.layer addAnimation:translateAnimation forKey:@“translateAnimation”];

但它并没有多大帮助,当我玩它的时候看起来有时它看起来像是在我将它移动到偏离中心后在正确的位置动画,但随后它又切换回从中心点到动画的动画。新的位置。

Sooo,任何建议或我是否需要提供其他信息。

0 个答案:

没有答案