Как я могу обнаружить, когда два UIImageView перекрываются? - PullRequest
5 голосов
/ 08 февраля 2011

У меня есть два UIImageViews, один из которых движется слева направо, а другой - сенсорный. Я хочу, чтобы NSLog отображал сообщение на консоли всякий раз, когда imagetwo перекрывает imageone. Как мне это сделать?

Ответы [ 4 ]

11 голосов
/ 08 февраля 2011

Вы можете использовать функцию CGRectIntersectsRect для простого тестирования пересечения прямоугольника, при условии, что UIImageViews совместно используют одно и то же суперпредставление (точнее, имеют одинаковое координатное пространство).

Скорее всего, вам нужно будет добавить код, подобный следующему:

  -(void) touchesEnded:(NSSet *) touches {
    if(CGRectIntersectsRect([imageViewA frame], [imageViewB frame])) {
      NSLog(@"Do something.");
    }
  }

для UIView, в котором размещены оба представления изображений, или аналогичный метод, который вызывается при завершении перетаскивания.

1 голос
/ 08 февраля 2011

попробуйте что-то вроде этого.

if (CGRectContainsRect([myImageView1 frame], [myImageView2 frame])) {
        NSLog(@"Overlaped, it's working!");
}
0 голосов
/ 05 октября 2016

В Swift 3.0 стало ...

if (self.image2P.bounds.contains(self.image3P.bounds)) {
    print("Overlaped, it's working!")
}
0 голосов
/ 08 февраля 2011

Вы можете использовать:

CGRectIsNull (CGRectIntersection (view1.bounds, view2.bounds));

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...