Je veux savoir s'il existe un moyen de limiter le mouvement de mon UIView dans sa vue d'ensemble lors de l'utilisation de GestureRecognizer.Lié le mouvement d'une vue qui est ajouté à UIPanGestureRecognizer, dans sa vue d'ensemble
par ex. J'ai un UIImageview À qui j'ajoute UIPanGestureRecognizer avec l'action panPiece. J'ajuste son centre de la façon suivante pour éviter son mouvement hors de sa vue d'ensemble. Mais ça ne marche pas correctement.
-(CGPoint) centerWithBounds:(CGPoint)center andViewFrame:(CGRect)viewFrame andBoundingFrame:(CGRect)boundingFrame{
CGFloat lowerXBound = boundingFrame.origin.x + (viewFrame.size.width/2);
CGFloat higherXBound = boundingFrame.origin.x + boundingFrame.size.width - (viewFrame.size.width/2);
CGFloat lowerYBound = boundingFrame.origin.y + (viewFrame.size.height/2);
CGFloat higherYBound = boundingFrame.origin.y + boundingFrame.size.height - (viewFrame.size.height/2);
if (center.x < lowerXBound) {
center.x = lowerXBound;
}
if (center.x > higherXBound){
center.x = higherXBound;
}
if (center.y < lowerYBound) {
center.y = lowerYBound;
}
if (center.y > higherYBound){
center.y = higherYBound;
}
return center;
}
- (void)panPiece:(UIPanGestureRecognizer *)gestureRecognizer
{
UIView *piece = [gestureRecognizer view];
[self adjustAnchorPointForGestureRecognizer:gestureRecognizer];
if ([gestureRecognizer state] == UIGestureRecognizerStateBegan || [gestureRecognizer state] == UIGestureRecognizerStateChanged) {
CGPoint translation = [gestureRecognizer translationInView:[piece superview]];
CGPoint translatedCenter = CGPointMake([piece center].x + translation.x, [piece center].y + translation.y);
CGPoint center = [self centerWithBounds:translatedCenter andViewFrame:[piece frame] andBoundingFrame:[[piece superview] frame]];
[piece setCenter:center];
[gestureRecognizer setTranslation:CGPointZero inView:[piece superview]];
}
}
L'aide de code est appréciée.
Ceci n'est pas vrai. Vous avez juste besoin de définir userInteractionEnabled = YES sur UIImageView. –