标签:uiscrollview 循环滚动 内存问题
问题描述:循环滚动scrollView---最后一张图片后面紧跟着第一张图片,第一张图片前面挨着最后一张图片,形成环,循环切换图片。
效果图如下:
具体代码如下:
// ViewController.m
#import "ViewController.h"
#define kW 375
#define kH 500
#define kCount 11
@interface ViewController () <UIScrollViewDelegate>
@end
@implementation ViewController
- (void)viewDidLoad {
[super viewDidLoad];
//加载滚动视图
[self _loadScroll];
}
- (void) _loadScroll
{
UIScrollView * scrollView=[[UIScrollView alloc]initWithFrame:CGRectMake(0, 0, kW, kH)];
scrollView.delegate=self;
for (int i=0; i<kCount+2; i++)
{
UIImageView * imageView=[[UIImageView alloc]initWithFrame:CGRectMake(i*kW, 0,kW ,kH )];
//图片序号
int imageIndex=i;
//如果是第一张和最后一张需要特殊处理
if (i==0)
{
imageIndex=kCount;
}
else if(i==kCount+1)
{
imageIndex=1;
}
//添加图片
NSString * imgName=[NSString stringWithFormat:@"t%i.jpg",imageIndex];
imageView.image=[UIImage imageNamed:imgName];
[scrollView addSubview:imageView];
}
scrollView.contentSize=CGSizeMake((kCount+2)*kW, kH); //滚动视图的总宽度
scrollView.showsHorizontalScrollIndicator=NO; //最下方的自带的进度条 NO--隐藏 YES---显示
scrollView.pagingEnabled=YES; //一下滑动一整个屏幕的宽度
[self.view addSubview:scrollView];
}
#pragma mark - UIScrollView代理方法实现
- (void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView
{
if (scrollView.contentOffset.x/kW==kCount+1)
{
NSLog(@"====="); //测试代码
scrollView.contentOffset=CGPointMake(kW, 0);
}
else if(scrollView.contentOffset.x==0)
{
scrollView.contentOffset=CGPointMake(kW*kCount,0);
}
// if (scrollView.contentOffset.x>(kCount+1)*kW)
// {
// scrollView.contentOffset=CGPointMake(kW, 0);
// }
// else if (scrollView.contentOffset.x/kW==0)
// {
// scrollView.contentOffset=CGPointMake(kW*kCount, 0);
// }
}
@end
缺点:没有实现重复利用,耗费太多内存,优化的程序,等改好后继续上传,敬请期待。。。。。PS:有感而发:最近感觉越来越找不到方向了,但是还在继续坚持,希望能够走到最后,加油吧,小伙伴们!
循环滚动scrollView---最后一张图片后面紧跟着第一张图片,第一张图片前面挨着最后一张图片
标签:uiscrollview 循环滚动 内存问题
原文地址:http://blog.csdn.net/qq_27364431/article/details/46240113