测试已测试 | ✗ |
Lang语言 | Obj-CObjective C |
许可协议 | MIT |
发布最新发布 | 2016年1月 |
Maintained by William Boles.
InsightfulPager是UIPageViewController的替代品,它提供了类似的功能但提供了更多的反馈。
#import <InsightfulPager/ISPPagingViewController.h>
....
- (ISPPagingViewController *)pagingViewController
{
if (!_pagingViewController)
{
_pagingViewController = [[ISPPagingViewController alloc] initWithPageViewController:self.pages[0]
pageSize:self.view.frame.size
centerPage:NO];
self.pagingViewController.dataSource = self;
self.pagingViewController.delegate = self;
}
return _pagingViewController;
}
#import <InsightfulPager/ISPPagingViewController.h>
....
- (void)viewDidLoad
{
[super viewDidLoad];
[self addChildViewController:self.pagingViewController];
[self.view addSubview:self.pagingViewController.view];
[self.pagingViewController didMoveToParentViewController:self];
[self.pagingViewController beginAppearanceTransition:YES
animated:YES];
}
#import <InsightfulPager/ISPPagingViewController.h>
....
- (UIViewController *)viewControllerBeforeViewController:(UIViewController *)viewController
{
NSUInteger indexOfFocusedViewController = [self.pages indexOfObject:viewController];
ISEPageViewController *viewControllerBeforeViewController = nil;
if (indexOfFocusedViewController > 0)
{
viewControllerBeforeViewController = self.pages[(--indexOfFocusedViewController)];
}
return viewControllerBeforeViewController;
}
- (UIViewController *)viewControllerAfterViewController:(UIViewController *)viewController
{
NSUInteger indexOfFocusedViewController = [self.pages indexOfObject:viewController];
ISEPageViewController *viewControllerAfterViewController = nil;
if (indexOfFocusedViewController < ([self.pages count] - 1))
{
viewControllerAfterViewController = self.pages[(++indexOfFocusedViewController)];
}
return viewControllerAfterViewController;
}
#import <InsightfulPager/ISPPagingViewController.h>
....
- (void)didMoveToViewController:(UIViewController *)toViewController
fromViewController:(UIViewController *)fromViewController
{
ISEPageViewController *page = (ISEPageViewController *)toViewController;
NSUInteger indexOfViewControllerMovedTo = [self.pages indexOfObject:toViewController];
NSUInteger indexOfViewControllerMovedFrom = [self.pages indexOfObject:fromViewController];
NSString *direction = nil;
if (indexOfViewControllerMovedTo > indexOfViewControllerMovedFrom)
{
direction = @"forwards";
}
else
{
direction = @"backwards";
}
page.informationalLabel.text = [NSString stringWithFormat:@"Moved onto this viewcontroller by scrolling %@", direction];
}
InsightfulPager允许您指定不同的页面大小,以便可以将页面外的视图同时显示在屏幕上。
#import <InsightfulPager/ISPPagingViewController.h>
....
- (ISPPagingViewController *)pagingViewController
{
if (!_pagingViewController)
{
CGSize pageSize = CGSizeMake(self.view.frame.size.width,
self.view.frame.size.height - kISESelectionBarOffset) //kISESelectionBarOffset is a constant float defined else where
_pagingViewController = [[ISPPagingViewController alloc] initWithPageViewController:self.pages[0]
pageSize:pageSize
centerPage:NO];
self.pagingViewController.dataSource = self;
self.pagingViewController.delegate = self;
}
return _pagingViewController;
}
如果您需要当前显示的(焦点集中)的UIViewController
页面,可以使用focusedViewController
属性。
InsightfulPager附带一个示例项目,其中提供了比上述更详细的说明。
InsightfulPager使用模块来导入/使用框架 - 您需要在项目中启用此功能。
如果有针对InsightfulPager的特定问题、功能请求或想分享意见,请在此处创建新问题。请注意,有关UIPageViewController
的一般问题应在Stack Overflow上提问。
鼓励提交pull请求!请尽量与现有的代码风格保持一致。如果您考虑对项目进行重大更改或添加,请提前通过创建一个新的问题来沟通。这样可以让大家对即将到来的更改做好准备,确保更改与项目的设计理念保持一致,并避免重复工作。