2016-04-19 9 views
0

Ich habe eine UIView in der Hauptansicht Controller, die 1 imageview.i Bildansicht mit dieser Methode verschoben enthält.Wie behalte ich imageview in UIView, wenn ich Imageview verschiebe?

- (void) touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event 
{ 
    UITouch *aTouch = [touches anyObject]; 
    if (aTouch.view == self.sub_View) { 
    CGPoint location = [aTouch locationInView:self.sub_View]; 
    CGPoint previousLocation = [aTouch previousLocationInView:self.sub_View]; 
    self.imageView.frame = CGRectOffset(self.imageView.frame, (location.x - previousLocation.x), (location.y - previousLocation.y)); 
    } 
} 

Bildansicht bewegen perfekt. Aber ich muss imageview in UIView behalten, wenn ich umgezogen bin. Problem mit diesem Code ist, wenn ich imageview verschiebe es auch außerhalb UIView verschoben wird. Ich muss Bildansicht innerhalb von UIView und nur innerhalb von UIView beweglich halten. Bitte helfen Sie mir, das zu lösen. So legen Sie die Grenze für die Bildansicht fest, sodass sie nur innerhalb von UIView verschoben werden kann.

+0

was self.sub_View –

+0

es ein UIView auf Hauptansicht ist die Imageview –

Antwort

0

Versuchen Code unten zu bewegen.

- (void) touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event 
{ 
    UITouch *aTouch = [touches anyObject]; 
    if (aTouch.view == self.sub_View) { 
    CGPoint location = [aTouch locationInView:self.sub_View]; 
    CGPoint previousLocation = [aTouch previousLocationInView:self.sub_View]; 
    CGRect newFrame = CGRectOffset(self.imageView.frame, (location.x - previousLocation.x), (location.y - previousLocation.y)); 
    if(newFrame.origin.x < 0) 
     newFrame.origin.x = 0; 
    if(newFrame.origin.y < 0) 
     newFrame.origin.y = 0; 
    if(newFrame.origin.x + newFrame.size.width > self.frame.size.width) 
     newFrame.origin.x = self.frame.size.width - self.imageView.frame.size.width; 
    if(newFrame.origin.y + newFrame.size.height > self.frame.size.height) 
     newFrame.origin.y = self.frame.size.height - self.imageView.frame.size.height; 

    self.imageView.frame = newFrame; 

    } 
} 
+0

jetzt Bewegung ist in Uiview, aber wenn ich Bildansicht zoome es wird Bildviewer Frame zurückgesetzt und wie Sie Bildlauf wird Bild ausblenden .. –

+0

was Sie unter self.frame.size.width? –

0

a) Sie können das clipsToBounds Eigentum Ihrer UIView zu YES

b) Sie haben die Brache-Code verwenden können Ihre UIImageView

self.imageView.center = CGPointMake(MAX(0.0, MIN(location.x - previousLocation.x, self.sub_View.bounds.size.width)), MAX(0.0, MIN(location.y - previousLocation.y, self.sub_View.bounds.size.height))); 
+0

es auf Imageview oberen Ecke links halten enthalten die nach dem 1. Schritt nach dem Imageview Aufenthalt dort. –