2016-04-21 16 views

Antwort

1

Sie können eine UIScrollView verwenden und stellen Sie die contentSize Eigenschaft, so dass seine heightheight die gleiche wie Ihre Ansicht des ist.

+0

Sie nicht meine Nummer, ich möchte einen kleinen ui Blick haben, die rollbaren sein kann aber nur nach links und rechts. und wenn der Benutzer nach unten scrollt, möchte ich unter der oberen Leiste bleiben, ich möchte nicht, dass er sich von seinem Platz bewegt –

1
  1. erstellen panRecognizer

    UIPanGestureRecognizer *panRecognizer; 
    panRecognizer = [[UIPanGestureRecognizer alloc] initWithTarget:self 
                    action:@selector(wasDragged:)]; 
    [[self subview] addGestureRecognizer:panRecognizer]; 
    

2.Create wasDragged Methode

- (void)wasDragged:(UIPanGestureRecognizer *)recognizer { 

    CGPoint translation = [recognizer translationInView:self.view]; 
    CGRect recognizerFrame = recognizer.view.frame; 
    recognizerFrame.origin.x += translation.x; 


    // Check if UIImageView is completely inside its superView 
    if (CGRectContainsRect(self.view.bounds, recognizerFrame)) { 
     recognizer.view.frame = recognizerFrame; 
    } 
    // Else check if UIImageView is vertically and/or horizontally outside of its 
    // superView. If yes, then set UImageView's frame accordingly. 
    // This is required so that when user pans rapidly then it provides smooth translation. 
    else { 
     // Check vertically 
     if (recognizerFrame.origin.y < self.view.bounds.origin.y) { 
      recognizerFrame.origin.y = 0; 
     } 
     else if (recognizerFrame.origin.y + recognizerFrame.size.height > self.view.bounds.size.height) { 
      recognizerFrame.origin.y = self.view.bounds.size.height - recognizerFrame.size.height; 
     } 

     // Check horizantally 
     if (recognizerFrame.origin.x < self.view.bounds.origin.x) { 
      recognizerFrame.origin.x = 0; 
     } 
     else if (recognizerFrame.origin.x + recognizerFrame.size.width > self.view.bounds.size.width) { 
      recognizerFrame.origin.x = self.view.bounds.size.width - recognizerFrame.size.width; 
     } 
    } 

    // Reset translation so that on next pan recognition 
    // we get correct translation value 
    [recognizer setTranslation:CGPointZero inView:self.view]; 
}