自己封裝的輪播工具
阿新 • • 發佈:2017-06-19
selector oat javascrip *** 觸發 userinfo ring 設置時間 下載
近期閑來無事,剛好自己封裝了一個輪播的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
自己封裝的輪播工具