Я пытаюсь обнаружить конфликт между падающим / анимированным UIImageView, который создается каждую секунду с помощью NSTimer.Вот код:
-(void)newobject{
int randomx = 76+ arc4random() %(290);
int randomDuration = 2+ arc4random() %(6);
int randomImage = 1+ arc4random() %(3) ;
NewObject = [[UIImageView alloc] initWithFrame:CGRectMake(randomx,0,36 ,36)];
UIImage *imag = [UIImage imageNamed:@"ball.png"];
[NewObject setImage:imag];
[self.view addSubview:NewObject];
numberofObjects += 1;
NewObject.tag = numberofObjects;
[UIView beginAnimations:nil context:nil];
[UIView setAnimationDuration:randomDuration];
[UIView setAnimationBeginsFromCurrentState:YES];
[UIView setAnimationDelegate:self];
[UIView setAnimationDidStopSelector:@selector(animationDone:finished:context:)];
NewObject.frame = CGRectMake(randomx, 300,NewObject.frame.size.width,NewObject.frame.size.height);
[UIView commitAnimations];
}
Этот код создает новый UIImageView с именем NewObject и анимирует его вниз по экрану.Для обнаружения столкновения у меня есть еще один NSTimer, который вызывается каждые 1.0 / 60.Вот код:
-(void)Collison{
for (int i = 1; i < numberofObjects; i++) {
UIImageView *image = NewObject;
[image viewWithTag:i];
CALayer *layer = image.layer.presentationLayer;
CGRect NewObjectFrame = layer.frame;
CALayer *layer2 = Sprint.layer.presentationLayer;
CGRect SprintFrame = layer2.frame;
if (CGRectIntersectsRect(NewObjectFrame, SprintFrame)) {
[self StopTimers];
NSLog(@"hello");
}
}
}
Проблема в том, что консоль говорит "Это работает", но UIImage не конфликтует, и я могу столкнуть символ с изображением, но консоль ничего не говорит и в то же времяесли я пытаюсь сопоставить символ с UIImageView, он работает.Я пытаюсь сказать, что это ненадежно.Может кто-нибудь помочь?
обновление: я редактировал код, но теперь он обнаруживает последнее добавленное представление uiimage.