2010-04-11 30 views
3

我有一個顯示數據列表的UIScrollView。 現在,當用戶向列表中添加一個項目時,我可以擴展UIScrollView的內容大小,並使用setContentOffset和YES順利向下滾動以動畫。刷新UIScrollView /動畫,計時(Objective-C)

當用戶從列表中刪除一個項目時,我想調整UIScrollView的內容大小,並以動畫方式向後滾動一個步驟。

如何獲得訂購權?現在,如果我在滾動備份之前調整內容大小,則滾動不是動畫。

在重新調整內容大小之前,我試過滾動備份,但仍然沒有給出平穩過渡。

有沒有辦法在調整內容大小之前完成滾動動畫?

感謝

回答

4

是的,您需要調用方法來調整您的內容的大小在滾動視圖的動畫完成後。您可以在滾動視圖代理的scrollViewDidEndScrollingAnimation:方法中執行此操作。將您的控制器設置爲委託,並實現該方法。

- (void)scrollViewDidEndScrollingAnimation:(UIScrollView *)scrollView { 
    [scrollView setContentSize: newSize]; 
} 

您不需要計時器或表視圖。

1

我認爲你應該使用UITablView不UIScrollView的。

在UITableView中,您可以實現刷新功能。使用

的一行代碼:

[tblView reloadData]; 
0

一件事你可以做的是使用一個計時器。據我瞭解,你想這樣做:

  1. 滾動到新視
  2. 從列表
  3. 調整大小內容的大小

你可以做這樣的

  • 刪除項目:

    [scrollView setContentOffset:... animated:YES]; 
    [NSTimer scheduledTimerWithTimeInterval:SECONDS_AS_FLOAT target:self selector:@selector(timerCallback:) userinfo:nil repeats:NO]; 
    
    - (void)timerCallback:(NSTimer *)timer { 
        // remove item from list at this point 
        ... 
        // set new content size 
        [scrollView setContentSize]; 
    } 
    

    你必須嘗試看看什麼是正確的SECONDS_AS_FLOAT使用時間,它應該比滾動durati稍微多一點上。它會在幾百毫秒的量級上,所以你可以試驗0.2到0.5之間的值。