AndroidからはじめるiOS

AndroiderがiOSアプリ開発に挑戦するメモ

UIScrollViewのオーバースクロールを取得する

ScrollViewのOverScrollにあたるプロパティをiOSではbouncesと呼ぶようです。

UIScrollView Class Reference

スクロールが起きたときのイベントハンドラdelegateにUIScrollViewDelegateを設定します。

UIScrollViewDelegate Protocol Reference

UIScrollViewDelegateのメソッドのプロパティのScrollViewからcontentOffsetで現在のスクロール位置を取り出す事ができます。

CGPoint currentPoint = [scrollView contentOffset];</span>

currentPoint.xの値はUIScrollViewのコンテンツの表示されている左上のポイントです。
今回取りたかったのは横向スクロールのコンテンツの最終地点(右側)のオーバースクロール。
スクロール中に何かしたかった分けではないのでscrollViewDidEndDraggingを使いましたが
他のメソッドでも大体scrollViewがプロパティで渡されるので同じようにできそうです。

- (void)scrollViewDidEndDragging:(UIScrollView *)scrollView willDecelerate:(BOOL)decelerate {
    CGPoint currentPoint = [scrollView contentOffset];
    CGRect r = [[UIScreen mainScreen] bounds];
    float overscrolledX = currentPoint.x - scrollView.contentSize.width + r.size.width;
    if (overscrolledX > 0 ) {
        // 右側のオーバースクロールが起きたよ
    }
}