Как обнаружить столкновение между UIImageViews?

#ios #objective-c

#iOS #objective-c

Вопрос:

Я создаю игру, в которой я хочу обнаружить столкновение между UIImageViews, я добавляю все UIImageViews в массив, и есть еще одно изображение мяча, который подпрыгивает по экрану. Я не могу обнаружить столкновение между теми UIImageViews, которые я добавил в массив (self.myViews), и UIImageView шара, который я добавил в раскадровку. Я не могу понять проблему.

 - (void) performAnimation {

int widht;
int heigh;

for (UIView * obj in self.myViews){
    [obj removeFromSuperview];
}



[self.myViews addObject:self.Ball];
[self.view addSubview: self.Ball];


for (heigh = 30; heigh < 200; heigh = heigh   40) {

    for (widht = 35; widht < 300; widht = widht   40) {


        UIImageView *image0 =[[UIImageView alloc] initWithFrame:CGRectMake(widht,heigh,20,10)];
        image0.image=[UIImage imageNamed:@"gruener-balken.png"];


        [self.view addSubview:image0];
        [self.myViews addObject:image0];

    }

   }
}

- (void)BallMovement {

for (UIImageView *obj in self.myViews) {

    if (CGRectIntersectsRect(obj.frame, _Ball.frame)) {

        //something happens here

    }

}
}
  

Я хочу динамически создавать UIImageViews и добавлять их в изменяемый массив (myViews). Затем я хочу обнаружить столкновение между этими UIImageViews в массиве и ImageView, которые я создал в раскадровке (_Ball.frame). Проблема в том, что столкновение не обнаружено, и шар перемещается за видами изображений из цикла.

Комментарии:

1. И вы проверили, что ваш код вызывается? И регистрировали кадры?

2. Где этот код обнаружения? В приложениях Cocoa нет метода tick() , который запускается каждый кадр, поэтому вам нужно будет запускать его в рамках метода, управляемого таймером…

3. Apple представила UICollisionBehavior в iOS 7. Взгляните на этот каталог developer.apple.com/library/ios/samplecode/DynamicsCatalog /…

4. Вызывается второй цикл, но точка останова в операторе if не имеет никакого эффекта. Но я понятия не имею, почему.

5. Я также не уверен, зачем вам нужно self.myViews , учитывая, что вы можете просто перечислить подвиды self.view . Кроме того, код, который removeFromSubview находится рядом с верхним, не удаляет представления, self.myViews и, наконец, всегда должно быть столкновение, с которым оно будет сравниваться self.Ball self.Ball