7901


`ScrollView`を指でスライドしたときにスライドする量を指定したいのですが、どうすればよろしいでしょうか？  
例えば`App
Store`を開いたときに出てくる「ベスト新着App」のような行の`ScrollView`を作りたいと思うと、普通の`ScrollView`で作るのでしょうか？それとも`Paging
Enable`を`YES`にした`ScrollView`で作るのでしょうか？  
現在下記のサイトを参考に実装しているのですが、画面が横向きになった時にスクロールの量が変わって画像が中途半端に切れて表示されてしまいます。

<http://www.yoheim.net/blog.php?q=20120715>

また、この「ベスト新着App」の`ScrollView`は1アイコンごとにスクロールできるようになっています。これを実現させるためにはスクロール量を指定しなければいけないと思うのですが、それとも何かスクロール量を指定する以外の方法でスクロールが行われているのでしょうか？  
どなたか分かる方がいれば教えていただきたいです。すみませんが、よろしくお願いします。


CC BY-SA 3.0
2015-03-13T06:31:33.197
7868
2015-03-14T02:37:31.690
5210
question
objective-c uiscrollview
UIScrollViewのスクロール量を指定する


対応OSがiOS6.0からなら`UICollectionView`が使えます。

`scrollToItemAtIndexPath`というメソッドを使うと表示位置を調整することが可能です。  
例えば`scrollViewDidEndDecelerating`や`scrollViewDidEndDragging`等と組み合わせるとスクロールが止まった後に位置調整ができます。

[scrollToItemAtIndexPath](https://developer.apple.com/library/ios/documentation/UIKit/Reference/UICollectionView_class/index.html#//apple_ref/occ/instm/UICollectionView/scrollToItemAtIndexPath:atScrollPosition:animated:)  
[UICollectionViewScrollPosition](https://developer.apple.com/library/ios/documentation/UIKit/Reference/UICollectionView_class/index.html#//apple_ref/doc/c_ref/UICollectionViewScrollPosition)

[code]

    - (void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView
    {
        〜 中略 〜
        // 位置を調整
        [_collectionView scrollToItemAtIndexPath:[NSIndexPathindexPathForRow:row inSection:0]
                                atScrollPosition:UICollectionViewScrollPositionLeft
                                        animated:YES];
    }
    
[/code]


CC BY-SA 3.0
2015-03-14T02:37:31.690
7901
2015-03-14T02:37:31.690
3516
7868
answer