TOPagerView
一个基于
UIScrollView
的子类,它允许进行类似UITableView
的分页水平滑动。
在 UICollectionView
尚未完全可行的时候开发的,TOPagerView
是一个用于以水平布局流线化渲染全屏“页面”内容的视图,类似于 Photos.app 中的幻灯片视图。
它遵循与 UITableView
相同的架构原则,通过代理对象不断地在页面滚动时回收页面视图池。
在当今这个时代,一定推荐您使用 UICollectionView
而不是这样的自定义类,但仍然可能存在此类视图有价值的情况。
功能
- 以全屏页面显示子视图,可以左右滑动。
- 可以从左到右切换页面方向到右到左。
- 可以添加头视图和尾视图。
- 提供 API 以跳转到指定页码。
- 可以取消自动翻页动画以响应用户事件,实现极快的导航。
要求
iOS 7.0 及以上
安装
手动
将文件夹 TOPagerView
拖入您的 Xcode 项目中。确保选中 如果需要则复制项目
选项,以确保正确将其导入 Xcode 项目文件夹。
CocoaPods
CocoaPods 是一个依赖管理工具,它使您能够轻松地将第三方库导入和管理到项目中。
将以下内容添加到您的 Podfile
pod 'TOPageView'
用法
TOPagerView
的行为与 UITableView
非常相似。您可以预先注册类,或在需要时创建新的实例。
您可以将 TOPagerView
添加到视图控制器,就像添加其他视图一样
self.pagerView = [[TOPagerView alloc] initWithFrame:self.view.bounds];
self.pagerView.scrollView.delegate = self; // The internal scroll view delegate can be publicly accessed if needed
self.pagerView.dataSource = self;
self.pagerView.delegate = self;
[self.view addSubview:self.pagerView];
默认情况下,显示内容极其简单。甚至没有必要继承 UIView
- (NSInteger)numberOfPagesInPagerView:(TOPagerView *)pageScrollView
{
return 8;
}
- (UIView *)pagerView:(TOPagerView *)pagerView pageViewForIndex:(NSInteger)pageIndex
{
UIView *view = [pagerView dequeueReusablePageView];
if (view == nil) {
view = [[UIView alloc] init];
view.backgroundColor = [UIColor whiteColor];
}
// Configure the view further
return view;
}
如果要在单个页面视图中显示不同类型的视图,您可以添加一个字符串标识符来区分页面视图
@interface MyView : UIView<TOPagerViewPageProtocol>
@end
@implmentation MyView
+ (NSString *)pageIdentifier
{
return @"MyViewIdentifier";
}
@end
// ---
@implementation MyViewController
- (UIView *)pagerView:(TOPagerView *)pagerView pageViewForIndex:(NSInteger)pageIndex
{
MyView *view = (MyView *)[pagerView dequeueReusablePageViewForIdentifier:[MyView pageIdentifier]];
if (view == nil) {
view = [[MyView alloc] init];
view.backgroundColor = [UIColor whiteColor];
}
// Configure the view further
return view;
}
@end
为什么构建此库?
我在 2013 年(据说是我 27 岁生日那天!)开始编写这个库,作为早先在 2011 年为 iComics 编写的分页视图的替代品。
我编写原始分页视图是在 iOS 5 时代,在 2012 年宣布 UICollectionView
之前。当时我对 iOS 开发还非常新手,因此原始分页视图的架构'不是很好'。功能是有的,但绝对没有遵循正确的 MVC 架构模型。
2013 年,我仍在努力支持原始的 iPad(运行 iOS 5),因此我想尽可能地避免使用 UICollectionView
。因此,我编写了此库作为替代品,在这个过程中极大地改善了设计。
现在的年份是2017年,原始的iPad及其直接继任者早已淘汰,完全不利用UICollectionView
而自己实现UIScrollView
的子类是非常值得怀疑的。
因此,我发布这段代码更多地是为了教育培训,而不是应该在生产中使用的代码,但如果你愿意,非常欢迎你在你的应用程序中使用它! :)
许可协议
本库遵守MIT许可协议。请参阅LICENSE获取详细信息。
鸣谢
TOPagerView
是由Tim Oliver为iComics创建的组件。
iPhone 5c设备由Pixeden制作。