我有一個UIScrollView包含大圖像,並使用分頁在圖像之間滾動。爲了節省內存,我只在當前可見的圖像前後加載一個圖像,並在滾動完成後加載/釋放新圖像。快速滾動並且不調用scrollViewDidEndDecelerating時會出現問題。 當scrollViewDidEndDecelerating被調用時,我想在活動頁面中顯示圖像名稱。scrollViewDidEndDecelerating沒有被調用
我該如何解決這個問題?爲什麼發生這種情況?
我有一個UIScrollView包含大圖像,並使用分頁在圖像之間滾動。爲了節省內存,我只在當前可見的圖像前後加載一個圖像,並在滾動完成後加載/釋放新圖像。快速滾動並且不調用scrollViewDidEndDecelerating時會出現問題。 當scrollViewDidEndDecelerating被調用時,我想在活動頁面中顯示圖像名稱。scrollViewDidEndDecelerating沒有被調用
我該如何解決這個問題?爲什麼發生這種情況?
scrollViewDidEndDecelerating:
並不意味着要進行頁面佈局。您應該執行scrollViewDidScroll:
並根據滾動視圖的contentOffset
計算當前可見的頁面。如果可見範圍發生變化,請爲以前不可見的頁面添加視圖,並刪除不再可見的頁面。
這並沒有幫助我找到解決我的問題。 – spd 2011-07-19 03:50:37
我用滾動視圖做相同的事情 - 延遲加載圖像。實際上,我們必須加載延伸的縮略圖(製作模糊的低分辨率圖像版本),然後在頁面實際顯示100%時加載實際圖像。
我只需要在scrollViewDidScroll中使用下面的代碼:scrollView。
- (void)scrollViewDidScroll:(UIScrollView *)scrollView
{
if (!_isCurrentlyRotating) {
CGFloat pageWidth = _scrollView.frame.size.width;
int page = floor((_scrollView.contentOffset.x - pageWidth/2)/pageWidth)+1;
if (_currentPage != page)
[self setCurrentPage:page];
}
}
以上計算將顯示的頁面(作爲滾動)。當頁面瀏覽量顯示爲50%時,它實際上會更改當前頁碼。這可以與頁面控件一起使用以突出顯示當前頁面點。
當用戶使用他們的手指改變頁面(正常行爲)時,使用上述(在滾動視圖中啓用分頁)scrollViewDidEndDecelerating:當頁面被100%顯示時調用scrollView。 100%我的意思是你只能看到一頁不是另一部分的一部分。
但是我們在調用scrollToPage:函數的滾動視圖的末尾有一個'Start Over'按鈕。
- (void) scrollToPage:(int)page {
CGRect frame;
frame.origin.x = self.scrollView.frame.size.width * page;
frame.origin.y = 0;
frame.size = self.scrollView.frame.size;
[self.scrollView scrollRectToVisible:frame animated:YES];
}
使用scrollRectToVisible:動畫:方法不觸發scrollViewDidEndDecelerating:方法所以簡單地添加銳化方法(其簡單地在圖像視圖加載TE高分辨率圖像)調用這兩種方法,這樣它會被稱爲如果用戶滾動或者按下了重新開始按鈕。
- (void) scrollViewDidEndScrollingAnimation:(UIScrollView *)scrollView {
[self sharpenImageView];
}
- (void) scrollViewDidEndDecelerating:(UIScrollView *)scrollView {
[self sharpenImageView];
}
我希望這有助於!
有時候,只是清理項目,然後重新運行
移& Cmd的&ķ 移& Cmd的& Alt鍵&ķ
每個滾動完成後scrollViewDidEndDragging會調用
-(void)scrollViewDidEndDragging:(UIScrollView *)scrollView willDecelerate:(BOOL)decelerate{}
scrollViewDidEndDecelerating不每條拖調用(如果你不ACCE速度draged停止後拖動它會不會永遠不會調用此FUNC)如果你想移動滾動視圖使用API
-(void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView{}
scrollViewDidEndScrollingAnimation不用拖動,這個API會被調用。
-(void)scrollViewDidEndScrollingAnimation:(UIScrollView *)scrollView{}
如果你不改變偏移量,你如何實現滾動? 我已經在不同的應用程序中進行了多次這樣的操作,並且您所描述的所有內容都可以使用「正常」方法(scrollRectToVisible)來實現,並根據您想實現的效果智能啓用/禁用動畫部分。聽起來你在這裏做的事很不尋常? – Adam 2011-03-20 14:24:15
你有這個答案,我有同樣的問題... – 2015-07-27 05:18:31