9
votes

Comment combiner Uiscrollview avec Uipagecontrol pour montrer différentes vues?

J'ai cherché et recherché un tutoriel pour cela, mais aucun d'entre eux n'est ce que je cherche. J'ai essayé l'échantillon d'Apple mais c'est juste des couleurs et je ne sais pas comment faire des points de vue. Tout ce que je cherche, c'est un écran qui sera une page tout en montrant le contrôle de la page. Chaque fois que les pages de la vue de défilement, je veux qu'il affiche une vue complètement différente. Pas de texte ni d'images différent, mais une vue différente. Beaucoup comme l'écran d'accueil de l'application iPhone ou ESPN Scorecenter. S'il vous plaît aider! Merci.


0 commentaires

5 Réponses :


1
votes

Il y a une question connexe: Comment utiliser Uipagecontrol pour créer plusieurs vues? , un vraiment bon moyen Pour ce faire, il est expliqué dans ce blog post: HTTP: // cocoawithlove.com/2009/01/multiple-virtual-pages-in-uisscrollview.html .


0 commentaires

4
votes

Essayez ce cadre: https://github.com/adrianflorian/afimageviewer pour présenter des images dans Une vue de défilement à l'aide d'un contrôle de page pour indiquer la page en cours.

Je n'ai pas encore ajouté de documentation, mais vous pouvez voir des exemples si vous clonez le projet.

Vous pouvez facilement: - Téléchargez des images à partir d'Internet dans un thread séparé en donnant uniquement un tableau d'URL (URL d'image) - Donnez-lui un tableau d'objets UIIMAGE - Mettre en œuvre un délégué et gérer l'image pour chaque page vous-même


0 commentaires

16
votes

J'ai créé cette solution universelle à mesure que des exemples trouvés était de compliquer et cela est lisible pour moi, le code doit être auto-explicite.

- (IBAction)changePage:(id)sender {
    _pageControlUsed = YES;
    CGFloat pageWidth = _scrollView.contentSize.width /_pageControl.numberOfPages;
    CGFloat x = _pageControl.currentPage * pageWidth;
    [_scrollView scrollRectToVisible:CGRectMake(x, 0, pageWidth, _scrollView.frame.size.height) animated:YES];
}

- (void)scrollViewDidEndScrollingAnimation:(UIScrollView *)scrollView {
    _pageControlUsed = NO;
}

- (void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView {
    if (!_pageControlUsed)
            _pageControl.currentPage = lround(_scrollView.contentOffset.x /
            (_scrollView.contentSize.width / _pageControl.numberOfPages));
}


4 commentaires

En fait, regardez la réponse de @ Daturc. Très propre et simple.


@RENE DOHAN Comment obtenir le même effet sur le clic ChangePage et ScrollViewDidendDecelerating. Mouvement zip ziphimal d'images sur le défilement même que cliquez sur le contrôle de la page.


@Renedohan absolument! J'aime ça à propos de tellement! Je n'ai signalé que l'autre solution parce que le vôtre avait tant de votes utiles et je suis meilleur que la nouvelle réponse était meilleure. :-)


J'utilise toujours cette solution parce que j'aime que Distenddecelerating s'appelle juste une fois sur et événement au lieu de plusieurs fois dans ScrollViewDidscroll ... Cela peut avoir d'autres conséquences indésirables ...



14
votes

Ceci fait la même chose que @Renedohan répond sans avoir besoin de variable pour stocker l'état xxx


1 commentaires

Bravo! Cela a travaillé pour moi lorsque j'ai connecté le délégué de la vue de défilement au contrôleur d'affichage.



1
votes

J'ai fait un projet de démo pour cette question. Veuillez visiter: https://github.com/lenhoxung86/pagecontroldemo


0 commentaires