期間復位的UIScrollView contentOffset我有一個UIScrollView
被垂直coreAnimation滾動如下:CoreAnimation
- (void) scrollAnimation
{
CGRect bounds = scrollview.bounds;
CABasicAnimation *animation = [CABasicAnimation animationWithKeyPath:@"bounds"];
animation.duration = 1.0;
animation.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut];
animation.fromValue = [NSValue valueWithCGRect:bounds];
bounds.origin.y += 1000;
animation.toValue = [NSValue valueWithCGRect:bounds];
[scrollview.layer addAnimation:animation forKey:@"bounds"];
scrollview.bounds = bounds;
}
的scrollView
的實際高度是小於總的動畫,所以我想重新設置contentOffset
爲0當滾動視圖達到其高度時,並無縫地繼續動畫。
當我嘗試內
- (void)scrollViewDidScroll:(UIScrollView *)scrollView
{
if (scrollView.contentOffset.y >= 600)
{
[scrollView setContentOffset:CGPointMake(0, 0)];
}
}
做到這一點的方法,似乎沒有動畫過程中被調用。當試圖在scrollView
上使用Key-Value觀察者時,會發生同樣的情況,手動滾動時該方法調用得很好,但在coreAnimation
期間調用方法不錯。定期檢查使用NSTimer
方法也證明是徒勞的。
如何在coreAnimation
期間獲得contentOffset
(或scrollview.bounds
),並重置它?
我希望動畫scrollView
,以便內容(幾個UILabels
)在大於內容大小的動畫上無縫滾動。
我認爲可能是這種情況。然而,在觸摸事件的正常滾動期間(即使正在進行動量滾動),這些值是可訪問的嗎?什麼是完成這種動畫的最簡單的方法,即。一個垂直滾動數字自動收報機?目前我正在考慮通過非常小的線性值來動畫它,並通過緩動函數計算持續時間值,但這似乎不是實現它的最佳方式。 – stefmalawi 2013-04-24 00:43:34
UIScrollView真的不是爲此而構建的。你可以看看這裏的一些答案:http://stackoverflow.com/questions/5675535/how-to-implement-cyclic-scrolling-on-tableview,但我不認爲你會最終以一個偉大的解。 – 2013-04-24 16:39:15