iOS
UIPageViewController
Zoeken…
Invoering
UIPageViewController biedt gebruikers de mogelijkheid om eenvoudig tussen verschillende weergaven te schakelen met behulp van een veegbeweging. Om een UIPageViewController te maken, moet u de UIPageViewControllerDataSource-methoden implementeren. Deze omvatten methoden om zowel UIPageViewController voor als na de huidige UIPageViewController te retourneren, samen met de methoden PresentationCount en PresentationIndex.
Syntaxis
- UIPageViewControllerTransitionStyle
- UIPageViewControllerNavigationOrientation
- UIPageViewControllerSpineLocation
- UIPageViewControllerNavigationDirection
Opmerkingen
Apple Developer referentie hier
Maak een horizontale paging UIPageViewController programmatisch
- Eerste reeks viewcontrollers die worden beheerd door UIPageViewController. Voeg een base view controller klasse die eigenschap heeft
identifier
die zal worden gebruikt om het beeld te controllers te identificeren bij het werken met UIPageViewController gegevensbron methoden. Laat de viewcontrollers erven van die basisklasse.
UIViewController *firstVC = [[UIViewController alloc] init];
firstVC.identifier = 0
UIViewController *secondVC = [[UIViewController alloc] init];
secondVC.identifier = 1
NSArray *viewControllers = [[NSArray alloc] initWithObjects: firstVC, secondVC, nil];
- Maak een instantie van UIPageViewController.
UIPageViewController *pageViewController = [[UIPageViewController alloc] initWithTransitionStyle:UIPageViewControllerTransitionStyleScroll
navigationOrientation:UIPageViewControllerNavigationOrientationHorizontal
options:nil];
- Gegevensbron is de huidige klasse die het
UIPageViewControllerDataSource
protocol moet implementeren.
pageViewController.dataSource = self;
-
setViewControllers
voegen alleen de eerste weergave-controller toe, daarna worden ze aan de stapel toegevoegd met behulp van gegevensbronmethoden
if (viewControllers.count) {
[pageViewController setViewControllers:@[[viewControllers objectAtIndex:0]]
direction:UIPageViewControllerNavigationDirectionForward
animated:NO
completion:nil];
}
- Voeg UIPageViewController toe als onderliggende weergavecontroller, zodat deze van de
appearance
enrotation
van de bovenliggende weergavecontroller ontvangt.
[self addChildViewController:pageViewController];
pageViewController.view.frame = self.view.frame;
[self.view addSubview:pageViewController.view];
[pageViewController didMoveToParentViewController:self];
- UIPageViewControllerDataSource-methoden implementeren
- (UIViewController *)pageViewController:(UIPageViewController *)pageViewController
viewControllerBeforeViewController:(UIViewController *)viewController
{
index = [(Your View Controler Base Class *)viewController identifier];
index--;
return [self childViewControllerAtIndex:index];
}
- (UIViewController *)pageViewController:(UIPageViewController *)pageViewController
viewControllerAfterViewController:(UIViewController *)viewController
{
index = [(Your View Controler Base Class *)viewController identifier];
index++;
return [self childViewControllerAtIndex:index];
}
- (NSInteger)presentationCountForPageViewController:(UIPageViewController *)pageViewController
{
return [viewControllers count];
}
- (NSInteger)presentationIndexForPageViewController:(UIPageViewController *)pageViewController
{
return index;
}
- Hulpprogramma die een weergavecontroller retourneert met behulp van een index. Als de index buiten de grenzen valt, retourneert deze nul.
- (UIViewController *)childViewControllerAtIndex:(NSInteger)index
{
if (index <= ([viewControllers count] - 1)) {
return [viewControllers objectAtIndex:index];
} else {
return nil;
}
}
Een eenvoudige manier om horizontale paginaweergavecontrollers (oneindige pagina's) te maken
- Laten we een nieuw project maken, ik kies voor Single View Application voor betere demonstratie
- Sleep een paginaweergavecontroller naar het storyboard, er zijn 2 dingen die u daarna moet veranderen:
- Stel de paginaweergavecontroller in als initiële weergavecontroller
- Wijzig de overgangsstijl om te bladeren
En u moet een UIPageViewController-klasse maken en deze vervolgens instellen als aangepaste klasse van de paginaweergavecontroller op het storyboard
Plak deze code in uw UIPageViewController-klasse, u zou een kleurrijke oneindige paged app moeten krijgen :)
class PageViewController: UIPageViewController, UIPageViewControllerDataSource { override func viewDidLoad() { self.dataSource = self let controller = createViewController() self.setViewControllers([controller], direction: .forward, animated: false, completion: nil) } func pageViewController(_ pageViewController: UIPageViewController, viewControllerBefore viewController: UIViewController) -> UIViewController? { let controller = createViewController() return controller } func pageViewController(_ pageViewController: UIPageViewController, viewControllerAfter viewController: UIViewController) -> UIViewController? { let controller = createViewController() return controller } func createViewController() -> UIViewController { var randomColor: UIColor { return UIColor(hue: CGFloat(arc4random_uniform(360))/360, saturation: 0.5, brightness: 0.8, alpha: 1) } let storyboard = UIStoryboard(name: "Main", bundle: nil) let controller = storyboard.instantiateViewController(withIdentifier: "View Controller") controller.view.backgroundColor = randomColor return controller } }
Dit is hoe het uiteindelijke project eruit ziet, je krijgt een viewcontroller met verschillende kleuren bij elke scroll: