GBInfiniteScrollView 1.8

GBInfiniteScrollView 1.8

测试已测试
语言语言 Obj-CObjective C
许可证 MIT
发布最后发布2014 年 12 月

Gerardo Blanco 维护。



  • Gerardo Blanco

GBInfiniteScrollView 类提供了一种按页面组织的无限滚动视图。它是 UIScrollView 的子类,允许用户在水平和垂直方向无限滚动。GBInfiniteScrollView 还提供了自动滚动功能。

GBInfiniteScrollView 对象必须有一个充当数据源的对象和一个充当代理的对象。数据源必须采用 GBInfiniteScrollViewDataSource 协议,代理必须采用 GBInfiniteScrollViewDelegate 协议。数据源提供 GBInfiniteScrollView 需要显示的视图。代理允许代理对象响应滚动操作。

GBInfiniteScrollView 覆盖了 UIViewlayoutSubviews 方法,因此只有在您创建新的 GBInfiniteScrollView 实例或分配新的数据源时才会调用 reloadData。重新加载无限滚动视图会清除当前状态,包括当前视图,但您可以指定要显示的初始页面索引。

它基于苹果的 StreetScroller iOS 示例代码。

需求

GBInfiniteScrollView 在 iOS 6.1 SDK 或更高版本上工作,并且与 ARC 项目兼容。

将 GBInfiniteScrollView 添加到您的项目

源文件

您可以直接将头文件和实现文件添加到项目中。

  1. 下载最新的代码版本 master.zip
  2. 在 Xcode 中打开您的项目,然后将头文件和实现文件拖放到项目(使用“产品导航视图”)中。确保在项目外部提取代码存档时被提示选择复制项目。
  3. 使用 #import <GBInfiniteScrollView/GBInfiniteScrollView.h> 在需要的地方包含 GBInfiniteScrollView

静态库

您还可以将 GBInfiniteScrollView 作为静态库添加到项目中或工作区中。

  1. 下载最新的代码版本 master.zip 或将存储库添加为 git 子模块到您的 git 跟踪项目中。
  2. 在 Xcode 中打开您的项目,然后将 GBInfiniteScrollView.xcodeproj 拖放到项目或工作区(使用“产品导航视图”)中。
  3. 选择您的目标并转到“构建阶段”标签页。在“链接二进制库”部分选择添加按钮。在列表中找到并添加 libGBInfiniteScrollView.a。您可能还需要将 GBInfiniteScrollView 添加到“目标依赖”列表中。
  4. 使用 #import <GBInfiniteScrollView/GBInfiniteScrollView.h> 在需要的地方包含 GBInfiniteScrollView

用法

这是一个使用示例

首先,导入 GBInfiniteScrollView 库。您的视图控制器必须符合 GBInfiniteScrollViewDataSourceGBInfiniteScrollViewDelegate 协议。

#import <UIKit/UIKit.h>

#import <GBInfiniteScrollView/GBInfiniteScrollView.h>

@interface GBViewController : UIViewController <GBInfiniteScrollViewDataSource, GBInfiniteScrollViewDelegate>

@end

然后,初始化一个 GBInfiniteScrollView 新实例。

GBInfiniteScrollView *infiniteScrollView = [[GBInfiniteScrollView alloc] initWithFrame:self.view.bounds];

infiniteScrollView.infiniteScrollViewDataSource = self;
infiniteScrollView.infiniteScrollViewDelegate = self;

infiniteScrollView.pageIndex = 0;

[self.view addSubview:infiniteScrollView];

[infiniteScrollView reloadData];

[infiniteScrollView startAutoScroll];

最后,实现 GBInfiniteScrollViewDataSourceGBInfiniteScrollViewDelegate 协议的方法。

- (void)infiniteScrollViewDidScrollNextPage:(GBInfiniteScrollView *)infiniteScrollView
{
    NSLog(@"Next page");
}

- (void)infiniteScrollViewDidScrollPreviousPage:(GBInfiniteScrollView *)infiniteScrollView
{
    NSLog(@"Previous page");
}

- (BOOL)infiniteScrollViewShouldScrollNextPage:(GBInfiniteScrollView *)infiniteScrollView
{
    return YES;
}

- (BOOL)infiniteScrollViewShouldScrollPreviousPage:(GBInfiniteScrollView *)infiniteScrollView
{
    return YES;
}

- (NSInteger)numberOfPagesInInfiniteScrollView:(GBInfiniteScrollView *)infiniteScrollView
{
    return self.data.count;
}

- (GBInfiniteScrollViewPage *)infiniteScrollView:(GBInfiniteScrollView *)infiniteScrollView pageAtIndex:(NSUInteger)index;
{
    GBPageRecord *record = [self.data objectAtIndex:index];
    GBInfiniteScrollViewPage *page = [infiniteScrollView dequeueReusablePage];

    if (page == nil) {
        page = [[GBInfiniteScrollViewPage alloc] initWithFrame:self.view.bounds style:GBInfiniteScrollViewPageStyleText];
    }

    page.textLabel.text = record.text;
    page.textLabel.textColor = record.textColor;
    page.contentView.backgroundColor = record.backgroundColor;
    page.textLabel.font = [UIFont fontWithName: @"HelveticaNeue-UltraLight" size:128.0f];

    return page;
}

许可证

MIT 许可证 (MIT)

版权所有 (c) 2013 Gerardo Blanco

以下是对任何获得本软件及其相关文档副本(“软件”)的人的免费许可,以便无限制地处理该软件,包括但不限于使用、复制、修改、合并、发布、分发、再许可和/或出售软件的副本,并允许向提供软件的人授权进行此类操作,前提是遵守以下条件

以上版权声明和本许可声明应包含在软件的所有副本或主要部分中。

软件按原样提供,不提供任何明示或暗示的保证,包括但不限于适销性、针对特定目的的适用性和非侵权性。在任何情况下,作者或版权所有者不对任何索赔、损害或其他责任负责,无论这些责任是在合同行为、侵权行为或其他行为中产生的,无论是由于软件或软件的使用或其他操作。