TOPagerView 0.0.7

TOPagerView 0.0.7

Tim Oliver 维护。



  • Tim Oliver

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制作。analytics