2015-08-25 1 views
1

Je suis en train de créer une mise en page très simplifiée, quelque chose comme l'application iOS Stripe a que vous pouvez voir ici: https://stripe.com/img/dashboard_iphone/screencast.mp4Scrollable UITableView glisser vers le haut en haut de l'écran à Swift

Vers 0: 06s la vue de la table est glissée et il se déplace vers le haut de la fenêtre.

Y a-t-il des instructions simples à Swift qui montrent ce modèle de conception que je vois partout, mais aucune idée de la façon de créer

Répondre

1
  1. Ajouter un UIView
  2. sous-classe qui UIView avec une classe personnalisée

En vous UIView sur mesure, vous aurez besoin d'un couple de variables et quelques remplacements. Assurez-vous que l'interaction de l'utilisateur est activé sur le UIView dans votre story-board, puis dans votre add classe personnalisée:

var startPosition: CGPoint? 
var originalHeight: CGFloat? 

Après cela, ajoutez ce qui suit:

override func touchesBegan(touches: Set<UITouch>, withEvent event: UIEvent?) { 
    let touch = touches.first 
    startPosition = touch?.locationInView(self) 
    originalHeight = self.frame.height 
} 

override func touchesMoved(touches: Set<UITouch>, withEvent event: UIEvent?) { 
    let touch = touches.first 
    let endPosition = touch?.locationInView(self) 
    let difference = endPosition!.y - startPosition!.y 
    let newFrame = CGRectMake(self.frame.origin.x, self.frame.origin.y + difference, self.frame.width, self.frame.height - difference) 
    self.frame = newFrame 
} 

override func touchesEnded(touches: Set<UITouch>, withEvent event: UIEvent?) { 

} 
0

En UIScrollView.h:

// When the user taps the status bar, the scroll view beneath the touch which is closest to the status bar will be scrolled to top, but only if its `scrollsToTop` property is YES, its delegate does not return NO from `shouldScrollViewScrollToTop`, and it is not already at the top. 
// On iPhone, we execute this gesture only if there's one on-screen scroll view with `scrollsToTop` == YES. If more than one is found, none will be scrolled. 
var scrollsToTop: Bool // default is YES. 

Initialiser délégué votre vue de défilement (sauf si vous avez déjà, probablement dans votre viewDidLoad), puis définissez ceci sur true.

Comme ceci:

myScrollView.scrollsToTop = true 

Si vous voulez être sûr que votre délégué de vue de défilement permet, vérifier cette méthode à partir du protocole de UIScrollViewDelegate:

optional func scrollViewShouldScrollToTop(scrollView: UIScrollView) -> Bool // return a yes if you want to scroll to the top. if not defined, assumes YES 

S'il vous plaît commenter toutes les préoccupations.

+0

Cest grand, mais son moins à voir avec en appuyant sur la barre d'état pour la faire défiler et plus comment superposer les deux vues (celle avec le graphique et la vue de la table en dessous) puis en défilant permettant à la vue de la table de se déplacer et chevaucher la vue graphique –

+0

haut? Si vous vérifiez UIScrollView.h, il y a une autre méthode en dessous de la dernière que j'ai mentionnée, appelée scrollViewDidScrollToTop. Utilisez-vous cela? –

+0

Donc, dans storybaord, cette vue de défilement devrait-elle chevaucher tout? –