web-dev-qa-db-fra.com

Création d'une barre de menus défilante horizontale infinie dans iOS

Je suis intéressé à créer une barre de menu comme ceci:

Menu Bar Example

D'après ce que j'ai lu, je devrais faire un UIScrollView. Existe-t-il des exemples en ligne qui font cela avec un défilement infini (entourant la barre de menus) et la possibilité de contrôler le toucher? (c’est-à-dire balayer et cela change la barre de menu).

Merci!

14
lele0108

Votre demande est très similaire à la mienne. Mais je ne peux pas trouver une solution assez bonne aussi. Je décide donc de créer quelque chose pour le faire moi-même.

ACTabScrollView prend en charge différents gestes. Et les variables tabs et pages défileront toujours de manière synchrone.

  • Swipe pages normalement
  • Les onglets Drag permettent de déplacer rapidement des pages
  • Click un onglet pour passer à cette page

demo1demo2demo3

La fonctionnalité Infinite Scrolling n'est pas encore prête, mais je vais continuer à l'implémenter.

J'utilise l'interface utilisateur similaire comme exemples dans ce projet. Je ne sais pas ce que l'application est, mais si l'utiliser comme exemple dérange personne. Contactez-moi et je retirerai immédiatement cela.

N'hésitez pas à me faire des suggestions pour l'améliorer :)

5
Azure Chen

J'espère que ce code fonctionnera pour vous.

- (void)viewDidLoad
{
 [super viewDidLoad];
 [self createHorizontalScroll];
}

- (void)createHorizontalScroll
{
   UIScrollView *scrollView = [[UIScrollView alloc] initWithFrame:CGRectMake(0, 80, self.view.frame.size.width, 80)];

   int buttonX = 0;
   for (int i = 0; i < 5; i++)
   {
     UIButton *button = [[UIButton alloc] initWithFrame:CGRectMake(buttonX, 0, 100, 60)];
    [button setTitle:[NSString stringWithFormat:@"Button %d", i] forState:UIControlStateNormal];
    [scrollView addSubview:button];
    buttonX = buttonX+button.frame.size.width;
    [button addTarget:self
               action:@selector(changeView:)
     forControlEvents:UIControlEventTouchUpInside];

   }

scrollView.contentSize = CGSizeMake(buttonX, scrollView.frame.size.height);
scrollView.backgroundColor = [UIColor greenColor];
[self.view addSubview:scrollView];

}

 -(void)changeView:(UIButton*)sender
 {
   NSLog(@"I Clicked a button %ld",(long)sender.tag);
 }

Vous pouvez définir le contenu de défilement à votre guise ainsi que les boutons de menu. Modifiez la vue en fonction du clic de bouton. Voici la capture d'écran du code ci-dessus

enter image description here

4
Shrikant K

J'espère que cela pourrait vous aider. Cela n'a pas plus d'animation mais fonctionne comme prévu.

Vous pouvez utiliser CollectionView dans ceci pour faire défiler horizontalement avec des options de menu comme Cellule CollectionView. Pour réaliser le balayage à gauche et à droite, nous pouvons utiliser UISwapeGuestureRecognizers et nous pouvons faire défiler les pages.

Voici comment je l'ai implémenté en utilisant CollectionView pour ScrollableMenu sous forme d'onglets en haut de l'écran et de Pages en bas du menu en utilisant la vue Conteneur.

Vous pouvez télécharger ce projet et vérifier si vous avez une idée de la mise en œuvre sous le lien ci-dessous.

Menu déroulant horizontal

J'espère que cela pourrait vous aider. Ceci est implémenté avec les dernières versions de Swift 4.0 et X-Code 9.2

Bonne codage ..

0
Ramprasad A