1
我有一個動態的UITableView,它將在單擊按鈕時插入和刪除行。如何讓UIScrollView調用scrollSizeDidScroll,當contentSize減少時
-(IBAction)foldingClicked:(id)sender
{
self.isInfoFolded = !self.isInfoFolded;
if(self.isInfoFolded)
{
//self.mainTable remove rows
}else
{
//self.mainTable insert rows
}
}
而我卻在scrollViewDidScroll:
-(void)scrollViewDidScroll:(UIScrollView*)scrollView
{
CGFloat main_offset = scrollView.contentOffset.y;
//animation
CGRect image_frame = self.imageView.frame;
if((main_offset >= 0) && (main_offset <= self.imageView.frame.size.height))
{
image_frame.origin.y = main_offset/2;
}else
{
image_frame.origin.y = image_frame.size.height/2;
}
}
一些動畫它主要工作正常。但是當我
- 單擊按鈕來插入行。 (tableView contentSize增加)
- 將表格視圖滾動到一個很大的偏移量。
- 點擊按鈕刪除行。 (中的tableView contentSize減少)
結果:由於降低contentSize
正在有效contentOffset
小過,在此過程中不會調用我的scrollViewDidScroll
方法,這使得動畫不完整的,並且留下的表視圖將向上滾動imageView
在我的情況下錯誤的位置。
我在移除行後試圖調用scrollViewDidScroll:
。但是,scrollViewDidScroll:
只被調用一次,contentOffset在該執行中爲'0'。它不是逐漸降到'0'。那麼有沒有什麼辦法讓scrollViewDidScroll
像往常一樣被連續調用?
它的工作原理!非常感謝! stackOverFlow真的是一個偉大的網站! –
我接受了你的答案。它解決了這個問題幾乎沒有問題。有一個小問題,即最終的contentOffset與contentOffset的表視圖自動調整不一樣。結果並不完美,但足夠好。謝謝。 –