首页 > 代码库 > 自己封装的轮播工具
自己封装的轮播工具
近期闲来无事,刚好自己封装了一个轮播的demo,能够实现设置时间间隔,是否轮播。是否显示indicator等。使用的时候直接设置參数就能够了,再也不用那么的麻烦了。
以下结合代码来阐述一下自己的思路吧。首先有两种模式,能够自己主动播放和不自己主动播放两种模式。
-(void)configureScrollPlayer{
[self backToOriginStatus];
if (automaticScroll) {
[self configureWithAutomaticScroll];
}else{
[self configureWithNoAutomaticScroll];
}
}
自己主动播放的时候,自己加入了一个定时器,来循环的播放,另外在自己主动播放的时候还能够滑动来实现切换页面,可是曾经做的时候这个问题是没有注意到的,后来发现两者会有冲突。总感觉用手滑动的时候效果很的堵塞。不是那么的流畅,细致分析了一下,发现时定时器出发的滚动和用手拖拽实现的滚动同一时候触发了。造成了这种现象。我在这里优先用户用手拖拽的效果。
由于用户拖拽的话。肯定是想高速的看到自己想看的东西。
在这里我在UIScrollview的代理方法里加了一个标签开关。isUserDragged =YES;
- (void)scrollViewWillBeginDragging:(UIScrollView *)scrollView{
[timer invalidate];
isUserDragged =YES;
}
- (void)scrollViewWillEndDragging:(UIScrollView *)scrollView withVelocity:(CGPoint)velocity targetContentOffset:(inout CGPoint *)targetContentOffset{
float playerWidth =mainScroll.frame.size.width;
float lastTargetOffset =pageIndex *playerWidth;
NSInteger page =(targetContentOffset->x - lastTargetOffset)/playerWidth;
pageIndex+=page;
// NSLog(@"pageIndex((((((((((((( %ld",(long)pageIndex);
// NSLog(@"pageIndex((((((((((((( %ld",(long)pageIndex);
UIButton *button =(UIButton *)[self viewWithTag:(101+pageIndex)];
[self pageIndicatorClicked:button];
timer =[NSTimer scheduledTimerWithTimeInterval:scrollTimeInterval target:self selector:@selector(run) userInfo:nil repeats:YES];
}
当run方法被触发时。默认用户没有拖拽。isUserDragged =NO;
-(void)run{
isUserDragged =NO;
pageIndex++;
UIButton *button =(UIButton *)[self viewWithTag:(100+pageIndex)];
[self pageIndicatorClicked:button];
if (pageIndex==[dataArr count]) {
pageIndex=0;
}
NSLog(@"**pageIndex******%d*********",(int)pageIndex);
}
这种话,事实上有两种模式,定时器轮播,用户手动切换页面。
以下来看看动画效果吧
demo下载地址例如以下:
demo
自己封装的轮播工具
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。