UIScrollView

_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/
スクロール(矩形指定)
_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/
[aView scrollRectToVisible:(CGRect) animated:(BOOL)];
矩形が見える位置までスクロールする。その際、追跡プロパティとドラッグプロパティはどちらもNOになる。

_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/
ステータスバーによる最上部にスクロール制御
_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/
ステータスバーをタップしたときに一番上までスクロールする機能。
この動作もUIScrollViewの処理で、デリゲートメソッドをオーバーライドすることによって、この機能をオフにすることもできる。
例えばこれを利用することで、画面内に複数のScrollViewがある場合に、ステータスバータップ時にどのScrollViewをスクロールさせるかを制御することが可能となる。
(BOOL)scrollViewShouldScrollToTop:(UIScrollView *)scrollView;
また、この動作によってアニメーションが完了したときに以下のデリゲートメソッドが呼ばれる。
(void)scrollViewDidScrollToTop:(UIScrollView *)scrollView;

_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/
最上部にスクロール
_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/
[scrollView setContentOffset:CGPointMake(0, 0) animated:YES];

_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/
最下部へのスクロール
_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/
if (scrollView.contentSize.height > scrollView.bounds.size.height) {
  CGPoint bottomOffset = CGPointMake(0, scrollView.contentSize.height - scrollView.bounds.size.height);
   [scrollView setContentOffset:bottomOffset animated:YES];
}

_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/
スクロールバー消去
_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/
scrollView.showsVerticalScrollIndicator = NO;
scrollView. showsHorizontalScrollIndicator = NO;


_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/
スクロール
_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/
// CGPointの位置が左上角になるようにスクロールする
[scrollView setContentOffset:CGPointMake(50, 50) animated:YES];

// 以下はどちらも意味は同じ、アニメーションなしでスクロール
[scrollView setContentOffset:CGPoint(50, 50) animated:NO];
scrollView.contentOffset = CGPoint(50, 50);

// トップにスクロールする
[scrollView setContentOffset:CGPointMake(0.0f, 0.0f)];
[scrollView setContentOffset:CGPointMake(0.0f, 0.0f) animated:YES];


_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/
プロパティ
_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/
・contentSize
ScrollViewが内包するコンテンツのサイズ。スクロール領域。

・contentInset
余白。contentSizeにcontentInsetを足したものが最終的なScrollViewのサイズになる。

・scrollIndicatorInsets
スクロール時に表示されるインジケータのinset。contentInsetを設定したらこちらも設定しないとスクロールバーが変なところに表示されるので注意すること。


_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/
デリゲート
_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/
/**
*  ドラッグ(スクロール)開始時に呼ばれる。
*  @param scrollView 対象UIScrollView
*  @return 無し
*/
- (void)scrollViewWillBeginDragging:(UIScrollView *)scrollView
{
  NSLog(@"scrollViewWillBeginDragging");
}

/**
*  スクロールしている間に呼び出される。
*  @param scrollView 対象UIScrollView
*  @return 無し
*/
- (void)scrollViewDidScroll:(UIScrollView *)scrollView
{
  NSLog(@"scrollViewDidScroll");
   [self updateSelectedItem];
}

/**
*  ドラッグ後、慣性が効いて動いたあとに止まった場合に呼ばれる。(慣性なしでドラッグを終えた場合は呼ばれない)
*  @param scrollView 対象UIScrollView
*  @return 無し
*/
- (void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView
{
  NSLog(@"scrollViewDidEndDecelerating");
   [self updateSelectedItem];
}

/**
*  ドラッグ後、指がデバイスが離れた時に呼ばれる。慣性が効いて動く場合はdecelerateがYESになる
*  @param scrollView 対象UIScrollView
*  @return 無し
*/
- (void)scrollViewDidEndDragging:(UIScrollView *)scrollView willDecelerate:(BOOL)decelerate
{

}

/**
*  アニメーション完了後に呼び出される。(setContentOffset:animated:メソッドのanimatedがNOの場合は呼び出されません。
*  @param scrollView 対象UIScrollView
*  @return 無し
*/
- (void)scrollViewDidEndScrollingAnimation:(UIScrollView *)scrollView
{
  NSLog(@"scrollViewDidEndScrollingAnimation");
}

/**
*  選択状態の項目を更新する。
*  @param 無し
*  @return 無し
*/
- (void)updateSelectedItem
{
  NSArray *array = [tabListView indexPathsForSelectedItems];
   if ([array count] == 1) {
       NSIndexPath *indexPath = array[0];
       [tabListView selectItemAtIndexPath:indexPath animated:NO scrollPosition:UICollectionViewScrollPositionNone];
   }
}


_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/
一瞬だけスクロールバーを表示する
_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/

[scrollView flashScrollIndicators];
最終更新:2015年08月17日 10:43