UIPageViewController page de l'indicateur de position
Récemment, j'ai codé ce petit Tutoriel sur UIPageViewController:
http://www.appcoda.com/uipageviewcontroller-tutorial-intro/
Après ce tutoriel, je me demandais si je peux changer la position de l'indicateur de Page en haut de l'écran.
Personne ne sait comment?
MODIFIER
Merci pour votre aide jusqu'à présent. j'ai suivi ce post:
Comment mettre de la UIPageControl élément sur le dessus de la sole de glissement des pages dans un UIPageViewController?
Maintenant, j'ai la page de Contrôle sur le dessus, mais certaines des choses étranges se produisent:
Si vous balayez à partir de la page 1 à la page 2 l'indicateur indique que l'utilisateur est sur la page 3.
je l'ai mis dans un NSLog qui me montre l'indice actuel et ça change tout balayer pour la page suivante de 0 à 1 et que 2.
Quelqu'un sait pourquoi?
Code Actuel:
@property (weak, nonatomic) IBOutlet UIPageControl *pageControl;
@end
@implementation APPViewController
- (void)viewDidLoad {
[super viewDidLoad];
self.pageController = [[UIPageViewController alloc] initWithTransitionStyle:UIPageViewControllerTransitionStyleScroll navigationOrientation:UIPageViewControllerNavigationOrientationHorizontal options:nil];
self.pageController.dataSource = self;
[[self.pageController view] setFrame:[[self view] bounds]];
APPChildViewController *initialViewController = [self viewControllerAtIndex:0];
NSArray *viewControllers = [NSArray arrayWithObject:initialViewController];
[self.pageController setViewControllers:viewControllers direction:UIPageViewControllerNavigationDirectionForward animated:NO completion:nil];
[self addChildViewController:self.pageController];
[[self view] addSubview:[self.pageController view]];
[self.pageController didMoveToParentViewController:self];
UIPageControl *pageControl = [UIPageControl appearance];
pageControl.pageIndicatorTintColor = [UIColor lightGrayColor];
pageControl.currentPageIndicatorTintColor = [UIColor orangeColor];
[self.view bringSubviewToFront:self.pageControl];
//Or whatever number of viewcontrollers you have
[self.pageControl setNumberOfPages:5];
}
- (APPChildViewController *)viewControllerAtIndex:(NSUInteger)index {
APPChildViewController *childViewController = [[APPChildViewController alloc] initWithNibName:@"APPChildViewController" bundle:nil];
childViewController.index = index;
return childViewController;
}
- (UIViewController *)pageViewController:(UIPageViewController *)pageViewController viewControllerBeforeViewController:(UIViewController *)viewController {
NSUInteger index = [(APPChildViewController *)viewController index];
if (index == 0) {
return nil;
}
//Decrease the index by 1 to return
index--;
[self.pageControl setCurrentPage:index];
return [self viewControllerAtIndex:index];
}
- (UIViewController *)pageViewController:(UIPageViewController *)pageViewController viewControllerAfterViewController:(UIViewController *)viewController {
NSUInteger index = [(APPChildViewController *)viewController index];
index++;
[self.pageControl setCurrentPage:index];
if (index == 5) {
return nil;
}
return [self viewControllerAtIndex:index];
}
AppChildViewController:
@property (assign, nonatomic) NSInteger index;
- (void)viewDidLoad {
[super viewDidLoad];
//Do any additional setup after loading the view from its nib.
switch(self.index)
{
case zero: {
self.imageView.image = [UIImage imageNamed:@"page1.png"];
NSLog(@"%d",self.index);
break;
}
case one: {
self.imageView.image = [UIImage imageNamed:@"page2.png"];
NSLog(@"%d",self.index);
break;
}
case two: {
self.imageView.image = [UIImage imageNamed:@"page3.png"];
NSLog(@"%d",self.index);
break;
}
case three: {
self.imageView.image = [UIImage imageNamed:@"page4.png"];
NSLog(@"%d",self.index);
break;
}
default: {
self.imageView.image = [UIImage imageNamed:@"page5.png"];
NSLog(@"%d",self.index);
break;
}
}
}
j'ai utilisé ce stackoverflow.com/questions/21073891/... pour het sur le dessus
veuillez vérifier mon montage
Salut, je pense que la meilleure chose que vous pouvez faire est de créer une nouvelle question ou de modifier l'en-tête de la question?
Avez-vous compris la question de l'indexation de la page? J'ai eu le même problème avec ma page personnalisée indicateur.. même si j'ai suivi l'exemple fourni dans plusieurs tutoriels.
OriginalL'auteur user3450607 | 2014-04-25
Vous devez vous connecter pour publier un commentaire.
Dans notre application, j'ai mis de l'indicateur de page en haut de page à la vue du contrôleur de la vue par une rotation de la vue à l'envers. C'est vraiment idiot, et je ne recommande pas l'utilisation de cette technique, sauf si vous êtes confiant. Il va quelque chose comme ceci:
Où l'affichage de la page du contrôleur de la vue est une sous-vue de
pageWrapperView
.Ensuite, vous devrez retourner le contenu des vues trop, de sorte qu'ils sont dans le bon sens.
J'ai une démo sur Github où cette technique est utilisée pour placer une barre d'onglets en haut de l'écran.
OriginalL'auteur Douglas Hill
Avez-vous essayé explicitement la création de la page de contrôle et en l'ajoutant le point de vue d'une image donnée, tels que:
... ou quelque chose de similaire?
OriginalL'auteur Mike
Vous ne pouvez pas manipuler la page d'index dans
viewControllerAfterViewController
etviewControllerBeforeViewController
parce qu'ils ne sont pas necesseraly appelée lorsque le changement de page, et vous n'aurez pas le bon indice.Au lieu de cela, je vous suggère de le manipuler en
pageViewController: didFinishAnimating:previousViewControllers:transitionCompleted:
OriginalL'auteur KIDdAe