160 votes

IOS: vérifier si un point se trouve à l'intérieur d'un rectangle

Y a-t-il un moyen de vérifier si un CGPoint se trouve à l'intérieur d'un CGRect spécifique ?

Un exemple serait : Je fais glisser un UIImageView et je veux vérifier si son point central CGPoint se trouve à l'intérieur d'un autre UIImageView.

3voto

Pankaj purohit Points 475

C'est si simple, vous pouvez utiliser la méthode suivante pour réaliser ce genre de travail :

-(BOOL)isPoint:(CGPoint)point insideOfRect:(CGRect)rect
{
    if ( CGRectContainsPoint(rect,point))
        return  YES;// à l'intérieur
    else
        return  NO;// à l'extérieur
}

Dans votre cas, vous pouvez passer imagView.center comme point et un autre imagView.frame comme rect dans la méthode ci-dessus.

Vous pouvez également utiliser cette méthode dans la méthode UITouch ci-dessous :

-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
{
}

1voto

Luis Franco R. Points 3

Je commence à apprendre à coder avec Swift et j'essayais de résoudre cela aussi, voici ce que j'ai mis en place dans l'aire de jeu de Swift :

// Code
var x = 1
var y = 2
var lowX = 1
var lowY = 1
var highX = 3
var highY = 3

if (x, y) >= (lowX, lowY) && (x, y) <= (highX, highY ) {
    print("à l'intérieur")
} else {
    print("pas à l'intérieur")
}

Il affiche à l'intérieur

1voto

Anjali Prasad Points 141
- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event{
            UITouch *touch = [[event allTouches] anyObject];
            CGPoint touchLocation = [touch locationInView:self.view];
            CGRect rect1 = CGRectMake(vwTable.frame.origin.x, 
            vwTable.frame.origin.y, vwTable.frame.size.width, 
            vwTable.frame.size.height);
            if (CGRectContainsPoint(rect1,touchLocation))
            NSLog(@"À l'intérieur");
            else
            NSLog(@"À l'extérieur");
    }

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X