Если вы уверены, что изображение в UIImageView
s всегда будет кружком (или UIImageView
s всегда будет квадратом), то вы можете сделать что-то вроде
CGRect frame1 = image1.frame;
CGRect frame2 = image2.frame;
CGPoint center1 = CGPointMake(CGRectGetMidX(frame1), CGRectGetMidY(frame1));
CGPoint center2 = CGPointMake(CGRectGetMidX(frame2), CGRectGetMidY(frame2));
CGFloat dx = center1.x - center2.x;
CGFloat dy = center2.x - center2.y;
float squaredDistance = dx * dx + dy * dy;
CGFloat radius1 = frame1.size.width/2;
CGFloat radius2 = frame2.size.width/2;
CGFloat minDistance = radius1 + radius2;
if (squaredDistance <= minDistance * minDistance) {
//Intersect
} else {
//Do not intersect
}
Я пытался сделать все параметрическим, но, конечно, если фиксированные кадры UIImageView
, то вы можете написать более простой код, используя, например, директивы #define
.
Например, если вы знаете, что первое изображение 50х50, а второе 60х60, вы можете написать что-то вроде
#define RADIUS1 25
#define RADIUS2 30
и упростите ваш код.
Я предположил, что каждый круг вписан в рамку UIImageView
. Если нет, то вы должны знать точное соотношение для правильного измерения радиуса. (Намного проще вписать круги в рамки.)