[iPhone] UIScrollerはどれくらいsmooth?
UIScrollerは,ドラッグが終わった後,指で弾いたみたいにスクロールに余韻が残るflick操作が実装されている.
このflickのスクロール量を予想できないかと調べてみた.
結論から言うと,まだずれてる.
マウスドラッグが終わった後,scrollerWillStartSmoothScrollingが呼ばれるので,そのタイミングで予想量を出してみた.
scrollDecelerationFactorを等比とした無限等比級数として,flickのスクロール量を算出しています.
scrollerDidEndSmoothScrollingが呼ばれたときがflickのスクロールが終わったときなので,そのときのポジションを表示.
それがどれくらいあっているかというと・・・・・.
4〜5ピクセルずれてる・・・・・.くそう.
以下参考コード.
- (void)scrollerWillStartSmoothScrolling:(UIScroller*)scroller { float x = [self offset].x + (int)(_velocity.width / ( 1 - _scrollDecelerationFactor ) ); float y = [self offset].y + (int)(_velocity.height / ( 1 - _scrollDecelerationFactor ) ); NSLog( @"scrollerWillStartSmoothScrolling predict stop position - now (%f,%f)", x, y ); } - (void)scrollerDidEndSmoothScrolling:(UIScroller*)scroller { NSLog( @"scrollerDidEndSmoothScrolling - now (%f,%f)", [self offset].x, [self offset].y ); }