iOS
UIPageViewController
Sök…
Introduktion
UIPageViewController ger användarna möjlighet att enkelt övergå mellan flera vyer med hjälp av en svepgest. För att skapa en UIPageViewController måste du implementera UIPageViewControllerDataSource-metoderna. Dessa inkluderar metoder för att returnera både UIPageViewController före och efter den nuvarande UIPageViewController tillsammans med presentationCount och presentationIndex-metoderna.
Syntax
- UIPageViewControllerTransitionStyle
- UIPageViewControllerNavigationOrientation
- UIPageViewControllerSpineLocation
- UIPageViewControllerNavigationDirection
Anmärkningar
Apple Developer-referens här
Skapa en horisontell sökning UIPageViewController programmatiskt
- Init array av visningskontrollanter som hanteras av UIPageViewController. Tillsätta en bas vy kontrollerklass som har egenskapen
identifier
som kommer att användas för att identifiera visa regulatorer när man arbetar med UIPageViewController datakäll metoder. Låt synkontrollerna arva från den basklassen.
UIViewController *firstVC = [[UIViewController alloc] init];
firstVC.identifier = 0
UIViewController *secondVC = [[UIViewController alloc] init];
secondVC.identifier = 1
NSArray *viewControllers = [[NSArray alloc] initWithObjects: firstVC, secondVC, nil];
- Skapa UIPageViewController-instans.
UIPageViewController *pageViewController = [[UIPageViewController alloc] initWithTransitionStyle:UIPageViewControllerTransitionStyleScroll
navigationOrientation:UIPageViewControllerNavigationOrientationHorizontal
options:nil];
- Datakälla är aktuell klass som måste implementera
UIPageViewControllerDataSource
protokollet.
pageViewController.dataSource = self;
-
setViewControllers
lägger bara till första visningskontrollern, nästa kommer att läggas till stacken med datakällmetoder
if (viewControllers.count) {
[pageViewController setViewControllers:@[[viewControllers objectAtIndex:0]]
direction:UIPageViewControllerNavigationDirectionForward
animated:NO
completion:nil];
}
- Lägg till UIPageViewController som en barnvynkontroll så att den får från sin överordnade visningskontrollers
appearance
ochrotation
.
[self addChildViewController:pageViewController];
pageViewController.view.frame = self.view.frame;
[self.view addSubview:pageViewController.view];
[pageViewController didMoveToParentViewController:self];
- Implementera UIPageViewControllerDataSource-metoder
- (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;
}
- Verktygsmetod som returnerar en visningskontroller med ett index, om indexet är utanför gränsen returnerar det noll.
- (UIViewController *)childViewControllerAtIndex:(NSInteger)index
{
if (index <= ([viewControllers count] - 1)) {
return [viewControllers objectAtIndex:index];
} else {
return nil;
}
}
Ett enkelt sätt att skapa horisontella sidvisningsstyrenheter (oändliga sidor)
- Låt oss skapa ett nytt projekt, jag väljer Single View-applikation för bättre demonstration
- Dra en sidvyskontroller till storyboardet, det finns två saker du bör ändra efter det:
- Ställ in sidvynskontrollern som initialvynskontroller
- Ändra övergångsstilen för att bläddra
Och du måste skapa en UIPageViewController-klass och sedan ange den som anpassad klass för sidvisningsstyrenheten på storyboard
Klistra in den här koden i din UIPageViewController-klass, du bör få en färgrik oändlig sidvisningsapp :)
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 } }
Så här ser det slutliga projektet ut, du får en visningskontroller med olika färger för varje rullning: