#import "HYViewController.h"
#define HYpageCount 5
@interface HYViewController () <UIScrollViewDelegate>
@property (weak, nonatomic) IBOutlet UIPageControl *pageControl;
@property (weak, nonatomic) IBOutlet UIScrollView *scrollView;
/** 定时器属性*/
@property(nonatomic,strong) NSTimer *timer;
@end
@implementation HYViewController
/** 控制器的view加载完毕的时候调用*/
- (void)viewDidLoad
{
[super viewDidLoad];
CGFloat imageW=self.scrollView.frame.size.width;
CGFloat imageH=self.scrollView.frame.size.height;
CGFloat imageY=0;
for(int i=0;i<HYpageCount;i++)
{
UIImageView *imageView=[[UIImageView alloc]init];
NSString *name=[NSString stringWithFormat:@"img_0%d",i+1];
imageView.image =[UIImage imageNamed:name];
CGFloat imageX= i*imageW;
imageView.frame=CGRectMake(imageX, imageY, imageW, imageH);
[self.scrollView addSubview:imageView];
}
self.scrollView.contentSize=CGSizeMake(HYpageCount*imageW, 0);
self.scrollView.showsHorizontalScrollIndicator=NO;
self.scrollView.pagingEnabled=YES;
self.pageControl.numberOfPages=HYpageCount;
self.scrollView.delegate=self;
[self addTimer];
}
/** 添加定时器*/
-(void)addTimer
{
self.timer= [NSTimer scheduledTimerWithTimeInterval:1.0 target:self selector:@selector(nextPage) userInfo:nil repeats:YES];
}
[[NSRunLoop currentRunLoop] addTimer:self.timer forMode:NSRunLoopCommonModes];
/** 移除定时器*/
-(void)removeTimer
{
[self.timer invalidate ];
self.timer=nil;
}
/** 当用户开始拖拽的时候调用*/
- (void)scrollViewWillBeginDragging:(UIScrollView *)scrollView
{
[self removeTimer];
}
/** 用户彻底中止拖拽的时候调用*/
-(void)scrollViewDidEndDragging:(UIScrollView *)scrollView willDecelerate:(BOOL)decelerate
{
[self addTimer];
}
/** 上面的问题解决方法*/
-(void)nextPage
{
int page=0;
if(self.pageControl.currentPage==HYpageCount-1)
{
page=0;
}
else
{
page=self.pageControl.currentPage+1;
}
CGFloat offsetW=self.scrollView.frame.size.width;
CGFloat offsetX=page*offsetW;
CGPoint offset=CGPointMake(offsetX, 0);
[self.scrollView setContentOffset:offset animated:YES];
}
#pragma mark -代理方法
/** * 当scrollview正在滚动的时候就会调用 * * @param scrollView */
-(void)scrollViewDidScroll:(UIScrollView *)scrollView
{
CGFloat scrollW=self.scrollView.frame.size.width;
int page=self.scrollView.contentOffset.x/scrollW;
self.pageControl.currentPage=page;
}
@end
!当出现两个点来回切换的问题的解决方案
!当用户用手拖拽的时候,中止后,加速跑动的问题
java