6 | 1月 | 2012 | HMDT Blog

カテゴリー : 2012年 1月6日

StreetScrollerで無限スクロール


iOSのUIScrollViewで、無限スクロールがやりたかった。フリックしてもフリックしても、どこまでもスクロールできる、ってやつ。

そのためにまず思いついたのは、contentOffsetをとっても広く取ること。でもこれだといつかは端にたどりついてしまうので、却下。次に思いついたのは、UIScrollViewのdelegateを設定して、scrollViewDidScroll:メソッドあたりで、contentOffsetが一定のところまでいったら逆の端に戻してやる、というやり方。これはやってみて、それっぽくはなったんだけど、contentOffsetを戻すところでスクロールが一瞬止まってしまう。残念、却下。

となると、後は自前のクラスを作って対応するしかないのかなー、でもUIScrollViewのあの手触り感とか減衰とかバウンスとか再現すんのは難しいなー、と思ってネットを探していたら、そのものずばりのサンプルがAppleから公開されていた。

それが、StreetScroller。ダウンロードして動かしてみると、おぉっできるぞ!確かに無限スクロールしているぞ!

ソースコードを見てみた。基本的な考え方は、contentOffsetを戻すやり方と変わらないみたいだ。ポイントは、UIScrollViewのサブクラスを作る事。そしてlayoutSuviewsをオーバーライドして、その中でcontentOffsetの処理を行うこと。これだとスクロールを止める事なくcontentOffsetを変更できるようだ。なるほどー。

これ、2011のWWDCで紹介されたネタらしいね。そっかー、やっぱりWWDC行かないとだめだね。