GMCPagingScrollView

https://github.com/GalacticMegacorp/GMCPagingScrollView

GMCPagingScrollView is a UIView containing a horizontally scrolling paging UIScrollView that supports page preloading, page dequeueing, and infinite scrolling.

GMCPagingScrollView是一个UIView,包含了一个水平方向翻页滚动的UIScrollView,支持预加载,重用以及无线滚动.

demo中提供的源码:

#import "DemoViewController.h"
#import "GMCPagingScrollView.h" static NSString * const kPageIdentifier = @"Page"; @interface DemoViewController () <GMCPagingScrollViewDataSource, GMCPagingScrollViewDelegate> @property (nonatomic, strong) GMCPagingScrollView *pagingScrollView; @end @implementation DemoViewController - (void)viewDidLoad {
[super viewDidLoad]; self.pagingScrollView = [[GMCPagingScrollView alloc] initWithFrame:CGRectMake(, , , )];
self.pagingScrollView.center = self.view.center;
self.pagingScrollView.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight;
self.pagingScrollView.dataSource = self;
self.pagingScrollView.delegate = self;
self.pagingScrollView.infiniteScroll = YES;
self.pagingScrollView.interpageSpacing = ;
[self.view addSubview:self.pagingScrollView]; [self.pagingScrollView registerClass:[UIView class] forReuseIdentifier:kPageIdentifier]; [self.pagingScrollView reloadData];
} #pragma mark - GMCPagingScrollViewDataSource - (NSUInteger)numberOfPagesInPagingScrollView:(GMCPagingScrollView *)pagingScrollView {
return ;
} - (UIView *)pagingScrollView:(GMCPagingScrollView *)pagingScrollView pageForIndex:(NSUInteger)index {
UIView *page = [pagingScrollView dequeueReusablePageWithIdentifier:kPageIdentifier]; switch (index) {
case :
page.backgroundColor = [UIColor redColor];
break;
case :
page.backgroundColor = [UIColor greenColor];
break;
case :
page.backgroundColor = [UIColor blueColor];
break;
} return page;
} - (void)pagingScrollViewDidScroll:(GMCPagingScrollView *)pagingScrollView
{
NSLog(@"x = %f", pagingScrollView.scrollView.contentOffset.x);
} @end

效果:

修改一下并使用SDWebImage来测试:

#import "DemoViewController.h"
#import "GMCPagingScrollView.h"
#import "SDWebImage.h" static NSString * const kPageIdentifier = @"Page"; @interface DemoViewController () <GMCPagingScrollViewDataSource, GMCPagingScrollViewDelegate> @property (nonatomic, strong) GMCPagingScrollView *pagingScrollView;
@property (nonatomic, strong) NSArray *dataArray; @end @implementation DemoViewController - (void)viewDidLoad {
[super viewDidLoad];
self.view.backgroundColor = [UIColor blackColor]; _dataArray = \
@[@"http://img4.duitang.com/uploads/item/201307/29/20130729153409_YCfU2.thumb.200_0.jpeg",
@"http://cdn.duitang.com/uploads/item/201212/08/20121208141407_3YGMi.thumb.200_0.jpeg",
@"http://cdn.duitang.com/uploads/item/201308/26/20130826211332_WZ4is.thumb.200_0.jpeg",
@"http://img4.duitang.com/uploads/item/201301/21/20130121223918_aFk4h.thumb.200_0.jpeg",
@"http://img4.duitang.com/uploads/item/201309/15/20130915114846_nsy2A.thumb.200_0.jpeg",
@"http://cdn.duitang.com/uploads/item/201306/20/20130620142009_X3fv3.thumb.200_0.jpeg",
@"http://img4.duitang.com/uploads/item/201306/17/20130617202501_Z2ZNP.thumb.200_0.jpeg",
@"http://img4.duitang.com/uploads/item/201201/23/20120123181139_EvHrc.thumb.200_0.jpg",
@"http://img4.duitang.com/uploads/item/201108/24/20110824232929_T85Zt.thumb.200_0.jpg",
@"http://cdn.duitang.com/uploads/blog/201308/06/20130806213223_Q2Jfj.thumb.200_0.jpeg",
@"http://cdn.duitang.com/uploads/item/201311/10/20131110141543_UMV24.thumb.200_0.jpeg",
@"http://cdn.duitang.com/uploads/item/201307/18/20130718225516_RBMnr.thumb.200_0.jpeg",
@"http://img4.duitang.com/uploads/item/201202/05/20120205163116_x2F4E.thumb.200_0.jpg",
@"http://img4.duitang.com/uploads/item/201202/19/20120219150016_r48NA.thumb.200_0.jpg",]; self.pagingScrollView = [[GMCPagingScrollView alloc] initWithFrame:self.view.bounds];
self.pagingScrollView.dataSource = self;
self.pagingScrollView.delegate = self;
self.pagingScrollView.infiniteScroll = YES;
self.pagingScrollView.interpageSpacing = ;
[self.view addSubview:self.pagingScrollView]; [self.pagingScrollView registerClass:[UIImageView class]
forReuseIdentifier:kPageIdentifier]; [self.pagingScrollView reloadData];
} #pragma mark - GMCPagingScrollViewDataSource - (NSUInteger)numberOfPagesInPagingScrollView:(GMCPagingScrollView *)pagingScrollView {
return [_dataArray count];
} - (UIView *)pagingScrollView:(GMCPagingScrollView *)pagingScrollView pageForIndex:(NSUInteger)index {
UIImageView *page = [pagingScrollView dequeueReusablePageWithIdentifier:kPageIdentifier]; [page setImageWithURL:[NSURL URLWithString:_dataArray[index]]];
page.contentMode = UIViewContentModeScaleAspectFit;
page.layer.masksToBounds = YES; return page;
} - (void)pagingScrollViewDidScroll:(GMCPagingScrollView *)pagingScrollView
{
NSLog(@"x = %f", pagingScrollView.scrollView.contentOffset.x);
} @end

[翻译] GMCPagingScrollView的更多相关文章

  1. 《Django By Example》第五章 中文 翻译 (个人学习,渣翻)

    书籍出处:https://www.packtpub.com/web-development/django-example 原作者:Antonio Melé (译者@ucag注:大家好,我是新来的翻译, ...

  2. 《Django By Example》第四章 中文 翻译 (个人学习,渣翻)

    书籍出处:https://www.packtpub.com/web-development/django-example 原作者:Antonio Melé (译者注:祝大家新年快乐,这次带来<D ...

  3. [翻译]开发文档:android Bitmap的高效使用

    内容概述 本文内容来自开发文档"Traning > Displaying Bitmaps Efficiently",包括大尺寸Bitmap的高效加载,图片的异步加载和数据缓存 ...

  4. 【探索】机器指令翻译成 JavaScript

    前言 前些时候研究脚本混淆时,打算先学一些「程序流程」相关的概念.为了不因太枯燥而放弃,决定想一个有趣的案例,可以边探索边学. 于是想了一个话题:尝试将机器指令 1:1 翻译 成 JavaScript ...

  5. 《Django By Example》第三章 中文 翻译 (个人学习,渣翻)

    书籍出处:https://www.packtpub.com/web-development/django-example 原作者:Antonio Melé (译者注:第三章滚烫出炉,大家请不要吐槽文中 ...

  6. 《Django By Example》第二章 中文 翻译 (个人学习,渣翻)

    书籍出处:https://www.packtpub.com/web-development/django-example 原作者:Antonio Melé (译者注:翻译完第一章后,发现翻译第二章的速 ...

  7. 《Django By Example》第一章 中文 翻译 (个人学习,渣翻)

    书籍出处:https://www.packtpub.com/web-development/django-example 原作者:Antonio Melé (译者注:本人目前在杭州某家互联网公司工作, ...

  8. 【翻译】Awesome R资源大全中文版来了,全球最火的R工具包一网打尽,超过300+工具,还在等什么?

    0.前言 虽然很早就知道R被微软收购,也很早知道R在统计分析处理方面很强大,开始一直没有行动过...直到 直到12月初在微软技术大会,看到我软的工程师演示R的使用,我就震惊了,然后最近在网上到处了解和 ...

  9. ASP.NET MVC with Entity Framework and CSS一书翻译系列文章之第一章:创建基本的MVC Web站点

    在这一章中,我们将学习如何使用基架快速搭建和运行一个简单的Microsoft ASP.NET MVC Web站点.在我们马上投入学习和编码之前,我们首先了解一些有关ASP.NET MVC和Entity ...

随机推荐

  1. redis-集群创建脚本

    之前建好了redis集群, 但没有找到集群重启的机制, 停电2次, 重新创建太麻烦, 于是写了个脚本辅助启动 redis的创建过程可以看: http://www.cnblogs.com/wenbron ...

  2. 从n个字符中,找出m个排列组合

    #include <string.h> #include <stdio.h> #include <stdlib.h> void combine(char *valu ...

  3. java字符串应用之表达式解析器

    一.表达式的组成    1.数字    2.运算符:+ - / * ^ % =    3.圆括号    4.变量二.运算符优先级    由高到低分别为:+-(正负号).^.*/%.+-.=    优先 ...

  4. bzoj 4912: [Sdoi2017]天才黑客

    Description Solution 这个题和点没什么关系 , 之和边与边之间关系有关 , 我们就把边看作点 , 边权就是 \(lcp\) , 点权看作这条边本来的权值. 现在考虑两两连边 , \ ...

  5. Resources in Visual Tracking

    这个应该是目前最全的Tracking相关的文章了 一.Surveyand benchmark: 1.      PAMI2014:VisualTracking_ An Experimental Sur ...

  6. 【原】戏说Java

    戏说Java 本文只是个人闲余之际写的,查阅了些许资料,仅当娱乐.如有雷同,纯属巧合.   如果要学好一个东西,就应该要把他拟人化,当做一个你的好朋友,对他产生兴趣,那么你自然而然就会学习好他了.俗话 ...

  7. datatable 转excel

    public static void ExportToExcel(System.Data.DataTable dt) { if (dt == null) return; Microsoft.Offic ...

  8. 并发编程之ThreadLocal源码分析

    当访问共享的可变数据时,通常需要使用同步.一种避免同步的方式就是不共享数据,仅在单线程内部访问数据,就不需要同步.该技术称之为线程封闭. 当数据封装到线程内部,即使该数据不是线程安全的,也会实现自动线 ...

  9. 使用mac下Fiddler的替代工具Charles进行手机抓包

    对手机的抓包有两种方式,各有优劣且互补,一般第一种即可,对于不走代理的 App 选择第二种方式 第一种 Fiddler: 利用 Fiddler 抓包,适合大多数走代理的应用, 优点 (1) 无需 ro ...

  10. zookeeper 选举

    选举概述: 1.启动时期的选举 所有的服务器状态为 LOOKING. 1.1.每个Server 会投出一票(投票规则为:SID.ZXID ,即 服务器ID 和 最大事务ID). 1.2.处理选票 (A ...