如何在多个UIViews或UIImageViews上使用UIGestureRecognizers进行点击,捏合和旋转

Gau*_*rav 0 iphone image-processing objective-c uigesturerecognizer ios

我不知道如何处理这个: - /

我只需要在图像上添加贴纸.应用程序将在选择特定贴纸时贴上像表情符号,心(图像)的贴纸,它将被添加到主图像中,用户可以使用贴纸进行操作,如旋转,缩放等,用户可以选择多个贴纸并可以进行旋转缩放等添加贴纸,

请指导如何实现这一点,我能够用单个贴纸执行图像maniuplation我没有如何执行多个贴纸选择,用户可以再次回到任何贴纸并执行操作.

Ush*_*n87 5

您可以使用此方法添加手势:

- (void) addGestureRecognizers{
    UIPanGestureRecognizer *panRecognizer = [[UIPanGestureRecognizer alloc] initWithTarget:self action:@selector(move:)];
    [panRecognizer setMinimumNumberOfTouches:1];
    [panRecognizer setMaximumNumberOfTouches:1];
    [self addGestureRecognizer:panRecognizer];

    UIRotationGestureRecognizer *rotateRecognizer = [[UIRotationGestureRecognizer alloc] initWithTarget:self action:@selector(rotate:)];
    self.multipleTouchEnabled = YES;
    [self addGestureRecognizer:rotateRecognizer];

    UIPinchGestureRecognizer *pinchRecognizer = [[UIPinchGestureRecognizer alloc] initWithTarget:self action:@selector(pinch:)];
    [self addGestureRecognizer:pinchRecognizer];

    UILongPressGestureRecognizer *longPressRecognizer = [[UILongPressGestureRecognizer alloc] initWithTarget:self action:@selector(longPressed:)];
    longPressRecognizer.minimumPressDuration = 2.0;
    [self addGestureRecognizer:longPressRecognizer];
}
Run Code Online (Sandbox Code Playgroud)

并实现这些选择器:

- (void) move:(UIPanGestureRecognizer *)recognizer{
    CGPoint translation = [recognizer translationInView:self.superview];
    recognizer.view.center = CGPointMake(recognizer.view.center.x+translation.x, recognizer.view.center.y+translation.y);
    [recognizer setTranslation:CGPointMake(0, 0) inView:self.superview];
}

- (void) rotate:(UIRotationGestureRecognizer *)recognizer{
    NSLog(@"Rotate");
    recognizer.view.transform = CGAffineTransformRotate(
                                                        recognizer.view.transform,
                                                        recognizer.rotation);
    recognizer.rotation = 0;
}

- (void) pinch:(UIPinchGestureRecognizer *)recognizer{
    recognizer.view.transform = CGAffineTransformScale(recognizer.view.transform, recognizer.scale, recognizer.scale);
    recognizer.scale = 1; 
}

- (void) longPressed:(UILongPressGestureRecognizer *)recognizer{
    NSLog(@"Long Pressed");
}
Run Code Online (Sandbox Code Playgroud)

注意:根据需要更改值