CGRect имеет функцию пересечения.Кадры UIViews - это CGRects.
if (CGRectIntersectsRect(view1.frame, view2.frame) == 1)
NSLog(@"The views intersect");
else
NSLog(@"The views do not intersect");
Проблема, которую я предвижу, заключается в том, что если у rects много пробелов, они будут пересекаться до того, как они фактически коснутся
Во-вторых, вам следует переключитьсядо блокировки анимации.Настоятельно рекомендуется
UIImageView* flakeView = [[[UIImageView alloc] initWithImage:flakeImage] autorelease];
// use the random() function to randomize up our flake attributes
int startY = round(random() % 320);
// set the flake start position
flakeView.center = CGPointMake(490, startY);
flakeView.alpha = 1;
// put the flake in our main view
[self.view addSubview:flakeView];
[UIView animateWithDuration:.7
animations:^ {
// set the postion where flake will move to
flakeView.center = viewToRotate.center;
};
Сделано все это из памяти, не знаю, есть ли ошибки.
Круговое столкновение:
a ^ 2 + b ^ 2
if(pow(view2.frame.origin.x - view1.frame.origin.x, 2) +
pow(view2.frame.origin.y - view1.frame.origin.y, 2) <
pow(view1.frame.size.width/2, 2))
{
//collision
}
else
{
//no collision
}
Опять все по памяти, проверьте на ошибки самостоятельно