2010-09-23 86 views
0

我試圖創建一個使用的NSTimer幻燈片放映......但下面的代碼不滾動定期圖像...問題使用的NSTimer的幻燈片

- (void)tilePages 

{

// Calculate which pages are visible 
CGRect visibleBounds = pagingScrollView.bounds; 
int firstNeededPageIndex = floorf(CGRectGetMinX(visibleBounds)/CGRectGetWidth(visibleBounds)); 
int lastNeededPageIndex = floorf((CGRectGetMaxX(visibleBounds)-1)/CGRectGetWidth(visibleBounds)); 
firstNeededPageIndex = MAX(firstNeededPageIndex, 0); 
lastNeededPageIndex = MIN(lastNeededPageIndex, [self imageCount] - 1); 

// Recycle no-longer-visible pages 
for (ImageScrollView *page in visiblePages) { 
    if (page.index < firstNeededPageIndex || page.index > lastNeededPageIndex) { 
     [recycledPages addObject:page]; 
     [page removeFromSuperview]; 
    } 
} 
[visiblePages minusSet:recycledPages]; 

// add missing pages 
for (int index = firstNeededPageIndex; index <= lastNeededPageIndex; index++) { 
    if (![self isDisplayingPageForIndex:index]) { 
     ImageScrollView *page = [self dequeueRecycledPage]; 
     if (page == nil) { 
      page = [[[ImageScrollView alloc] init] autorelease]; 
     } 
     [self configurePage:page forIndex:index]; 
     [pagingScrollView addSubview:page]; 
     [visiblePages addObject:page]; 

    } 


}  

}

在viewWillAppear中方法我已經使用...

timer = [NSTimer scheduledTimerWithTimeInterval:3.0 target:self selector:@selector(timerFired:) userInfo:nil repeats:YES]; 

調用事件在時間間隔被解僱我用...

-(void)timerFired:(NSTimer *)timer 

{

[self tilePages]; 

}

我試圖調試。事件在3秒內被解僱,但tilePages沒有被調用。我已經使用scrollViewDidScroll方法在tilePages執行得很好的情況下...可能是什麼問題?請幫忙...

+0

*「但tilePages沒有被調用」* - 你檢查過使用跟蹤或追蹤斷點? – 2010-09-23 14:45:40

+0

Ya ...我用斷點來檢查......程序在3秒後進入方法,但沒有執行......當調用scrollViewDidScroll方法時執行相同的代碼...是「[自我tilePages];「代碼足以獲得幻燈片... ??? – 2010-09-24 04:35:56

回答

0

調用[self tilePages];將不會顯示新的頁面。它看起來像是基於WWDC 2010示例代碼進行分頁和縮放圖像。因爲我熟悉那個代碼,所以我可能會幫助一些。

您應該創建自己的方法來更改pagingScrollView的框架。然後你應該從timerFired方法調用這個方法。替換[自tilePages]與[自changePage],添加以下代碼:

-(void)changePage{ 
    CGRect pageFrame = pagingScrollView.frame; 
    pageFrame.size.width -= (2 * 10); 
pageFrame.origin.x = (pagingScrollView.frame.size.width * aVariableHoldingTheCurrentPageNumber)+20; 
[pagingScrollView scrollRectToVisible:pageFrame animated:YES]; 
} 

基本上只是計算要滾動到頁面框架,然後調用scrollRectToVisible。

我希望這會有所幫助。