質問: UIScrollView を使用して画像(黒線内が画面)を以下のように並べて !スクロール前 スワイプさせたら以下のようにループさせたいです。 !スクロール後 * UIScrollView で画像をタイル上に並べること * UIScrollView で画像をループさせること この2つを実現するにはどのようなコードを書けばいいのでしょうか?
回答: 例えば、画面幅=320、ボタン幅=72、ボタン同士のマージン=8とすると、 * 1セット分のボタン = (72+8)*5個 = 400 * ループ用のボタン(画面幅分) = 320 / (72+8) = 4個 となるので、ScrollViewに1セット分のボタン(5個)とループ用のボタン(4個)を並べて、 このサイズをcontentSizeに設定します。 ``` |<-1セット分 ->|<-ループ用 ->| +-------------+-----------+ |橙 黃 緑 青 赤 橙 黃 緑 青 | +-------------+-----------+ ``` そして、`UIScrollViewDelegate`の`scrollViewDidScroll:`の中で、下記のようにループ処理を行えばいいと思います。 ``` - (void)scrollViewDidScroll:(UIScrollView *)scrollView { #define _WIDTH (400) //1セット分のボタンのサイズ if (scrollView.contentOffset.x >= _WIDTH) { scrollView.contentOffset = CGPointMake(scrollView.contentOffset.x - _WIDTH, scrollView.contentOffset.y); } else if (scrollView.contentOffset.x < 0) { scrollView.contentOffset = CGPointMake(scrollView.contentOffset.x + _WIDTH, scrollView.contentOffset.y); } } ``` ループ用のボタンがちょっと無駄ですが、お手軽にループを実現できると思います。