0

Ich erstelle eine Anwendung, die benutzerdefinierte Bild beschneidet ... bietet. , in dem Benutzer einen Teil des Bildes mit Rechteck auswählen, die als pro Benutzer Berührung bewegt werden & kann die Größe neu sein sollte diesen Teil zu beschneiden ......zeichnen rect auf Bild, das in der Größe geändert werden kann und auf dem Bildschirm mit Touch bewegt

i auf das Bild rect wollen, so dass ich folgende Verwendung dieser Teil zuschneiden Verfahren

ich in der Lage bin durch folgende Methode

-(void) cropImage 
{ 
    CGSize size = iv.frame.size; 

    CGRect rect = CGRectMake(size.width/4, size.height/4, size.width/2,size.height/2); 

    CGImageRef imageRef = CGImageCreateWithImageInRect([iv.image CGImage], rect);  
    UIImage *img = [UIImage imageWithCGImage:imageRef]; 

    CGImageRelease(imageRef);   

    // Display Image  
    UIImageView *imageView = [[UIImageView alloc] initWithImage:img];  
    [imageView setFrame:CGRectMake(70.0, 480.0,(size.width/2), (size.height/2))];  
    [scrollView addSubview:imageView]; 

    [imageView release]; 

    [scrollView scrollRectToVisible:imageView.frame animated:YES]; 

} 

ich will Lösung für die Erstellung rect chtung Bild zuzuschneiden, die & durch Berührung bewegt durch Berührung der Größe verändert werden können ...

ich bin neu auf dem iPhone so .... bitte helfen Sie mir, wie das geht ....

Antwort

2

i aus schönes Beispiel meine Antwort bekam diesen Link bilden Image Cropper ..

wenn jemand besser als das hier bitte pot hier .... wenn es verdient, dass ich diese antwort annehmen werde

0

Hier ist ein einfacher Ansatz mit einem UILongGesture mit 2 Fingern. Das Auswahlrechteck ist auf die Berührungen beschränkt. SelectionView ist ein UIView anfänglich ausgeblendet.

Dies ist die Initialisierung der Geste im UIViewController:

UILongPressGestureRecognizer *twoFingerLongGesture = [[UILongPressGestureRecognizer alloc] initWithTarget:self action:@selector(handleTwoFingerLongGesture:)]; 
[twoFingerLongGesture setNumberOfTouchesRequired:2]; 
[self.view addGestureRecognizer:twoFingerLongGesture]; 

Und das ist der Umgang der Geste:

- (void)handleTwoFingerLongGesture:(UIGestureRecognizer *)sender 
{ 
    switch (sender.state) { 
     case UIGestureRecognizerStateBegan: 
     { 
      NSLog(@"mainView 2FingerLONG - UIGestureRecognizerStateBegan"); 
      CGPoint p1 = [sender locationOfTouch:0 inView:self.view]; 
      CGPoint p2 = [sender locationOfTouch:1 inView:self.view]; 
      [self updateFrameSelectionWithPoint1:p1 point2:p2]; 
      [self.view bringSubviewToFront:selectionView]; 
      selectionView.hidden = NO; 
      break; 
     } 
     case UIGestureRecognizerStateChanged: 
     { 
      NSLog(@"mainView 2FingerLONG - UIGestureRecognizerStateChanged"); 
      CGPoint p1 = [sender locationOfTouch:0 inView:self.view]; 
      CGPoint p2 = [sender locationOfTouch:1 inView:self.view]; 
      [self updateFrameSelectionWithPoint1:p1 point2:p2]; 
      break; 
     } 
     case UIGestureRecognizerStateEnded: 
     { 
      selectionView.hidden = YES; 
      // Here you must perform the selection 
      break; 
     } 
     case UIGestureRecognizerStateCancelled: 
     { 
      selectionView.hidden = YES; 
      break; 
     } 
     default: 
      break; 
    } 
} 

- (void) updateFrameSelectionWithPoint1:(CGPoint)p1 point2:(CGPoint)p2 
{ 
    CGRect frameSelection; 
    frameSelection.origin.x = fminf(p1.x, p2.x); 
    frameSelection.origin.y = fminf(p1.y, p2.y); 
    frameSelection.size.width = fabsf(p1.x - p2.x); 
    frameSelection.size.height = fabsf(p1.y - p2.y); 
    selectionView.frame = frameSelection; 
} 
+0

danke für answer.but ich bekomme Lösung von BJImageCropper –