如何在移动过程中定义CALAYer在UIView中的位置

时间:2016-02-18 13:16:49

标签: ios objective-c core-animation calayer cabasicanimation

我想制作一个苹果从树上掉下来的应用程序,用户可以用篮子抓住它。当我触摸屏幕时,篮子开始移动,因此它朝那个方向移动 - 但是慢慢地。为此,我使用

-(void) touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event
{
    UITouch* t = [touches anyObject];
    CGPoint p = [t locationInView:self.view];
    if(p.y <self.view.frame.size.height-50)
    {
        p.y = self.view.frame.size.height-50;
    }

    CABasicAnimation *basketmovementAnimation = [CABasicAnimation animationWithKeyPath:@"position"];
    [basketmovementAnimation setFromValue:[NSValue valueWithCGPoint:[[self.basketLayer presentationLayer]position]]];
    [basketmovementAnimation setDuration:3.0];

    [self.basketLayer setPosition:p];
    [self.basketLayer addAnimation:basketmovementAnimation forKey:@"basket"];
}

所以问题是如何获得&#34; basket&#34;的坐标。在运动中?我需要它与倒下的苹果的坐标进行比较。 提前致谢

1 个答案:

答案 0 :(得分:1)

CALayer有一个方法。

- (id)presentationLayer

来自CALayer类参考

  

此方法返回的图层对象提供了关闭   当前正在屏幕上显示的图层的近似值。   当动画正在进行时,您可以检索此对象和   用它来获取这些动画的当前值。