利用递归 实现UIScrollView无限滚动的效果

项目需求

利用递归 实现UIScrollView无限滚动的效果。

上机试题,

#import "ViewController.h"

@interface ViewController (){

UIScrollView *mainScroll;

BOOL isFinish;

int x;

}

@end

@implementation ViewController

- (void)viewDidLoad {

[super viewDidLoad];

x=0;

isFinish = YES;

mainScroll = [[UIScrollView alloc]init];

mainScroll.frame = self.view.bounds;

mainScroll.contentSize = CGSizeMake(self.view.bounds.size.width*8, self.view.bounds.size.height);

for(int i = 0; i < 8; i++){

UIImageView *imgView = [[UIImageView alloc]initWithImage:[UIImage imageNamed:[NSString stringWithFormat:@"%d.jpg",i+1]]];

imgView.frame = CGRectMake(self.view.bounds.size.width*i, 0, self.view.bounds.size.width, self.view.bounds.size.height);

[mainScroll addSubview:imgView];

}

[self.view addSubview:mainScroll];

[self moveScroll];

}

//No.1

//开始写代码,实现八张图片连续滚动到最后一张之后按相反的顺序再滚回到第一张,循环滚动不结束。

-(void)moveScroll

{

}

//end_code

- (void)didReceiveMemoryWarning {

[super didReceiveMemoryWarning];

}

@end

答案:

//No.1

//开始写代码,实现八张图片连续滚动到最后一张之后按相反的顺序再滚回到第一张,循环滚动不结束。

-(void)moveScroll{

[NSTimer scheduledTimerWithTimeInterval:0.5 target:self selector:@selector(move) userInfo:nil repeats:YES];

}

static int count = -1;

-(void)move

{

x = mainScroll.contentOffset.x/self.view.bounds.size.width;

if (x == 0 || x == 7) {

count = -count;

}

x = x +count;

[mainScroll setContentOffset:CGPointMake(x*self.view.bounds.size.width, 0)];

}

时间: 2024-10-25 07:22:44

利用递归 实现UIScrollView无限滚动的效果的相关文章

UIScrollView无限滚动和轮播效果

XX问我一个问题,就是以前做过的无线滚动,-_-||,突然发现没什么印象了,于是赶紧做了个Demo熟悉一下,其实也挺简单的 原理:改变数组,重新加载图片,偏移量1,2,3达到3瞬间回到2,达到2,瞬间回到1 利用3个UIImageView多次利用 贴代码: // // ViewController.m // 测试-滚动 // // Created by lanqs on 15/2/7. // Copyright (c) 2015年 Tanqihong. All rights reserved.

iOS_UIScrollView实现无限滚动,思路与代码

UIScrollView实现无限滚动的三种思路. 当然只是我的一些用法,当然还有非常多的实现方式,如果大家有好的实现思路也可以告诉我,相互学习嘛~ UIScrollView无限滚动 第一种方式: 原理:利用结束的位置来重新设置ScrollView ContentOffset的值,让人产生视觉上的无限循环,优点:代码易懂,缺点,会创建多余的内存. 第二种方式: 原理:利用中间的两个变量来当前的View及缓冲的View,只创建两个View,将当前的View放在中间.判断滑动的位置,优先去缓冲的Vie

jquery实现无限滚动瀑布流实现原理

现在类似于pinterest这类的表现效果很火,其实我比较中意的是他的布局效果,而不是那种瀑布流. 虽然我不是特别喜欢这种瀑布流的表现样式,但是还是写了几篇关于无限滚动瀑布流效果的文章,Infinite scroll+Masonry=无限滚动瀑布流,infinite-scroll-jquery滚动条(下拉)加载数据插件之类的文章.可能是我表达描述不是很详细清楚,所以好多朋友看了不是很清楚,并发信给我求解释.所以有了今天这篇文章. 其实早在:十几款jquery无限滚动插件这 篇文章中我就提到过这种

纯javascript实现文字、图片无限滚动效果

使用说明:xMarquee(' 对象id ',' 滚动方向 ',' 偏移(正整数,越大滚动越快,默认 1) ',' 频率(正整数,越小滚动越快,默认 50) '); 根据个人需求可以对'偏移'和'频率'进行调整,达到最佳效果. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd&quo

iOScollectionView广告无限滚动(Swift实现)

今天公司里的实习生跑过来问我一般App上广告的无限滚动是怎么实现的,刚好很久没写博客了,就决定写下了,尽量帮助那些处于刚学iOS的程序猿. 做一个小demo,大概实现效果如下图所示: 基本实现思路: 1. 在你需要放置无限滚动展示数据的地方把他的数据,在原本的基础上把你要展示的数据扩大三倍.(当然扩大两倍也是可以的,三倍的话,比较好演示) // MARK: - 设置数据源 func collectionView(_ collectionView: UICollectionView, number

用原生的javascript 实现一个无限滚动的轮播图

说一下思路:和我上一篇博客中用JQ去写的轮播图有相同点和不同点 相同点: 首先页面布局是一样的 同样是改变.inner盒子的位置去显示不同的图片 不同点: 为了实现无限滚动需要多添加两张重复的图片 左右切换和前面的方法有所不同,前面是获取当前的索引值乘以-600px当做位移距离,现在是需要获取当前.inner的位置来加上或者减去-600来实现 下面来一步步的去实现轮播图: 首先是html <!DOCTYPE html> <html lang="en"> <

iOS开发:一个无限滚动自动播放图片的Demo(Swift语言编码)

很久以前就想写这么一个无限滚动的Demo了,最近学习了下Swift,手中没有可以用来练手的Demo,所以才将它实现了. Github地址(由于使用了UIView+AutoLayout第三方进行布局,所以Github判断主要语言是OC):https://github.com/wzpziyi1/DisplayingImage 使用UICollectionView来实现的,不同于UIScrollView实现的一点是,就是不需要再手动实现缓存池功能,因为UICollectionView中的cell本就是

UIScrollView无法滚动的解决办法及UIScrollView的代理(delegate)

1•如果UIScrollView无法滚动,可能是以下原因: Ø没有设置contentSize ØscrollEnabled = NO Ø没有接收到触摸事件:userInteractionEnabled = NO Ø没有取消autolayout功能(要想scrollView滚动,必须取消autolayout) 2. •很多时候,我们想在UIScrollView正在滚动 或 滚动到某个位置 或者 停止滚动 时做一些特定的操作 • •要想完成上述功能,前提条件就是能够监听到UIScrollView的整

上拉、下拉无限滚动组件-pc端

场景: web项目,聊天记录历史搜索.需要支持上拉无限加载,下拉无限加载. 目标: 支持所需场景:可配置. 难点: 顶部无限滚动很麻烦,网上没找着好的解决方案.刚开始 顶部也想使用 IntersectionObserver 特性来做,但二次触发比较麻烦,后来改用监听 scroll 事件.问题又来了,滚动条一直处于顶部,无法保持原来的位置. 本例解决方案是:利用 scrollIntoViewIfNeeded 特性,在组装列表完成后,手动调用,使其滚动到 原来的列表项位置. 成品效果: 凑合能用,O