14609


UIScrollView を使用して画像（黒線内が画面）を以下のように並べて

![スクロール前](https://i.stack.imgur.com/lVWfj.png)

スワイプさせたら以下のようにループさせたいです。

![スクロール後](https://i.stack.imgur.com/yxtxp.png)

  * UIScrollView で画像をタイル上に並べること
  * UIScrollView で画像をループさせること

この２つを実現するにはどのようなコードを書けばいいのでしょうか？


CC BY-SA 3.0
2015-02-05T09:52:18.303
5992
2015-08-19T03:53:35.540
2015-02-05T10:10:29.020
5505
5505
question
ios objective-c scrollview
スクロールビューで画像をループさせてタイル上に並べたい


例えば、画面幅=320、ボタン幅=72、ボタン同士のマージン=8とすると、

  * 1セット分のボタン = (72+8)*5個 = 400
  * ループ用のボタン（画面幅分） = 320 / (72+8) = 4個

となるので、ScrollViewに1セット分のボタン（5個）とループ用のボタン（4個）を並べて、  
このサイズをcontentSizeに設定します。

[code]

    |<-1セット分 ->|<-ループ用 ->|
    +-------------+-----------+
    |橙 黃 緑 青 赤  橙 黃 緑 青 |
    +-------------+-----------+
    
[/code]

そして、`UIScrollViewDelegate`の`scrollViewDidScroll:`の中で、下記のようにループ処理を行えばいいと思います。

[code]

    - (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);
        }
    }
    
[/code]

ループ用のボタンがちょっと無駄ですが、お手軽にループを実現できると思います。


CC BY-SA 3.0
2015-08-19T03:53:35.540
14609
2015-08-19T03:53:35.540
10966
5992
answer