1. 程式人生 > >自己封裝的輪播工具

自己封裝的輪播工具

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

自己封裝的輪播工具