Utilisation du mixage UIPageViewController et UIButton

Voici la chose: mon application a besoin d'une série d'écrans de tutoriel au début lorsque les gens le lancent, avec deux buttons en bas de l'écran pour permettre aux gens de s'inscrire ou de se connecter. (comme l'image montre) Exemple

Ma question est: comment puis-je garder les buttons sur l'écran lorsque les gens glissent les images du tutoriel?

J'ai essayé plusieurs façons:

  1. Dans PageContentViewController (sous-class de UIViewController), j'ai une UIImageView pour l'image du tutoriel, et deux UIButton pour les buttons. De cette façon, les buttons obtiennent également la diapositive, pas ce que je veux.

  2. J'utilise un nouveau ViewController pour les buttons, et dans mon rootviewController, j'ajoute ce nouveau viewcontroller comme sous-vue. De cette façon, le nouveau viewcontroller cache les images du didacticiel en dessous. Je ne peux pas faire glisser l'image. J'ai également essayé de définir la valeur alpha du nouveau viewcontroller, de sorte que je puisse voir les images en dessous, mais je ne peux toujours pas le faire glisser.

De meilleures idées ou un exemple de code que je peux apprendre?

C'est très simple. L'astuce consiste à append les buttons "sur le dessus" de votre vue de controller de vue de page. C'est-à-dire, après avoir ajouté le controller de vue de page, vous pouvez utiliser la méthode sendSubviewToBack pour vous assurer que les buttons restnt au premier plan pendant que vous serez en mesure de glisser entre les différents controllers de vue de votre controller de page. Vous pouvez comprendre ce comportement en suivant simplement ces étapes:

  1. Ouvrez Xcode.
  2. Créez un nouveau projet et select "Application basée sur des pages".

Xcode créera une application de base avec une implémentation UIPageViewController dans le RootViewController. Dans la méthode viewDidLoad de RootViewController, vous verrez le code suivant:

- (void)viewDidLoad { [super viewDidLoad]; // Do any additional setup after loading the view, typically from a nib. // Configure the page view controller and add it as a child view controller. self.pageViewController = [[UIPageViewController alloc] initWithTransitionStyle:UIPageViewControllerTransitionStyleScroll navigationOrientation:UIPageViewControllerNavigationOrientationHorizontal options:nil]; self.pageViewController.delegate = self; DataViewController *startingViewController = [self.modelController viewControllerAtIndex:0 storyboard:self.storyboard]; NSArray *viewControllers = @[startingViewController]; [self.pageViewController setViewControllers:viewControllers direction:UIPageViewControllerNavigationDirectionForward animated:NO completion:nil]; self.pageViewController.dataSource = self.modelController; [self addChildViewController:self.pageViewController]; [self.view addSubview:self.pageViewController.view]; // Set the page view controller's bounds using an inset rect so that self's view is visible around the edges of the pages. CGRect pageViewRect = self.view.bounds; self.pageViewController.view.frame = pageViewRect; [self.pageViewController didMoveToParentViewController:self]; // Add the page view controller's gesture recognizers to the book view controller's view so that the gestures are started more easily. self.view.gestureRecognizers = self.pageViewController.gestureRecognizers; } 

Maintenant, prenez le Main.storyboard et vous verrez la scène RootViewController. Ajoutez un UIButton à sa vue en utilisant le constructor de l'interface. capture d'écran

Maintenant, ajoutez la ligne suivante à la fin de la méthode viewDidLoad.

 [self.view sendSubviewToBack:self.pageViewController.view]; 

Et lancez-vous! vous verrez que c'est juste ce que vous vouliez.

Voir les captures d'écran de la sortie: PremierSecondeTroisième