UIScrollViewで表示を任意の座標に吸着させる方法
今回はUIScrollViewで表示を任意の座標に吸着させる方法を記していきます。
「あれ、"UIScrollView.pagingEnabled = YES"とすればよくない?」と思うかもしれませんが、
それだとスクロール全体を一気にスクロールしたいということができないため、
今回目標とするスクロールの挙動としては、
「全体を軽快にスクロールできつつ、スクロールの動きが停止したときに任意の座標に吸着させる」
というものだ。
とはいえやるべきことは簡単で、「スクロールの動きが停止したときに」と上で書いたとおり、
UIScrollViewのデリゲートメソッドである、
//スクロールの減速がなくなったとき
-(void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView {
[selfadjustScrollViewOffset];
}
//ドラッグが完了したとき
-(void)scrollViewDidEndDragging:(UIScrollView *)scrollView willDecelerate:(BOOL)decelerate {
if(decelerate)
return;
[selfadjustScrollViewOffset];
}
の2つに、スクロールの位置を調整する処理("UIScrollView.setContentOffset:XGPoint animated:YES")を入れればOK。
ドラッグ処理のほうに、
if(decelerate)
return;
が入っているのは、ドラッグが完了したときに減速があれば無視するというもの。つまりこの減速がなくなったときに、位置調整はするのでここでは無視するということだ。
この処理を入れ忘れると、カクカクとしたおかしな動きになるので注意が必要ですw