在iPhone中动画时获取图像的帧坐标

时间:2009-09-08 08:13:32

标签: iphone animation

我正在使用SnowFall应用程序,其中图像从屏幕顶部落到底部。这个应用程序使用动画来完成这项任务。

//将片状物放入主视图中     [self.view addSubview:flakeView];

[UIView beginAnimations:nil context:flakeView];
// set up how fast the flake will fall
[UIView setAnimationDuration:4 * speed];

// set the postion where flake will move to
//flakeView.frame = CGRectMake(endX, 500.0, 25.0 * scale, 25.0 * scale);
flakeView.frame = CGRectMake(endX, 500.0,16, 16);

// set a stop callback so we can cleanup the flake when it reaches the
// end of its animation
[UIView setAnimationDidStopSelector:@selector(onAnimationComplete:finished:context:)];
[UIView setAnimationDelegate:self];
[UIView commitAnimations];

我的问题是我需要捕捉它们移动的图像帧。

有没有什么方法可以让我找到屏幕上图像的当前位置。

由于

编辑:我正在尝试使用:CGRectIntersectsRect(frame1,frame2)其中frame1是动画的图像,frame2是一个对象。如果图像与物体相交,我必须要做一些事情。

1 个答案:

答案 0 :(得分:6)

当您应用这样的动画时,视图的框架(以及视图的CALayer的框架)会立即反映最终位置。

要在动画期间获取当前位置的帧,您需要视图的图层presentationLayer

CALayer *layer = flakeView.layer.presentationLayer;
CGRect layerFrame = layer.frame;
BOOL intersects = CGRectIntersectsRect(layerFrame, frame2);