GBInfiniteScrollView
类提供了一种按页面组织的无限滚动视图。它是 UIScrollView
的子类,允许用户在水平和垂直方向无限滚动。GBInfiniteScrollView
还提供了自动滚动功能。
GBInfiniteScrollView
对象必须有一个充当数据源的对象和一个充当代理的对象。数据源必须采用 GBInfiniteScrollViewDataSource
协议,代理必须采用 GBInfiniteScrollViewDelegate
协议。数据源提供 GBInfiniteScrollView
需要显示的视图。代理允许代理对象响应滚动操作。
GBInfiniteScrollView
覆盖了 UIView
的 layoutSubviews
方法,因此只有在您创建新的 GBInfiniteScrollView
实例或分配新的数据源时才会调用 reloadData
。重新加载无限滚动视图会清除当前状态,包括当前视图,但您可以指定要显示的初始页面索引。
它基于苹果的 StreetScroller iOS 示例代码。
GBInfiniteScrollView
在 iOS 6.1 SDK 或更高版本上工作,并且与 ARC 项目兼容。
您可以直接将头文件和实现文件添加到项目中。
#import <GBInfiniteScrollView/GBInfiniteScrollView.h>
在需要的地方包含 GBInfiniteScrollView
。您还可以将 GBInfiniteScrollView
作为静态库添加到项目中或工作区中。
GBInfiniteScrollView.xcodeproj
拖放到项目或工作区(使用“产品导航视图”)中。libGBInfiniteScrollView.a
。您可能还需要将 GBInfiniteScrollView
添加到“目标依赖”列表中。#import <GBInfiniteScrollView/GBInfiniteScrollView.h>
在需要的地方包含 GBInfiniteScrollView
。这是一个使用示例
首先,导入 GBInfiniteScrollView
库。您的视图控制器必须符合 GBInfiniteScrollViewDataSource
和 GBInfiniteScrollViewDelegate
协议。
#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];
最后,实现 GBInfiniteScrollViewDataSource
和 GBInfiniteScrollViewDelegate
协议的方法。
- (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
以下是对任何获得本软件及其相关文档副本(“软件”)的人的免费许可,以便无限制地处理该软件,包括但不限于使用、复制、修改、合并、发布、分发、再许可和/或出售软件的副本,并允许向提供软件的人授权进行此类操作,前提是遵守以下条件
以上版权声明和本许可声明应包含在软件的所有副本或主要部分中。
软件按原样提供,不提供任何明示或暗示的保证,包括但不限于适销性、针对特定目的的适用性和非侵权性。在任何情况下,作者或版权所有者不对任何索赔、损害或其他责任负责,无论这些责任是在合同行为、侵权行为或其他行为中产生的,无论是由于软件或软件的使用或其他操作。