忍者ブログ

佐崎司と愉快な仲間達

ゲーム、アニメ、CG、iOS開発など思いついたことを記事にしています。 管理人が3人いますので、記事にまとまりはないと思います。 iPhoneアプリのレビュー依頼も受け付けています。

UIScrollViewのbouncesアニメーションをキャンセルする方法調査

わか

UIScrollViewのbouncesの動作について備忘録を記載します。

UIScrollviewはズーム時に端まで移動したら、ぴょんと跳ねるバウンス効果があります。
今回このバウンス効果の途中でバウンスをキャンセルしようとしてみましたが、うまく
いきませんでした。

バウンスのアニメーション中にsetContentOffsetで別の表示位置に移動させようと
しましたが、移動しませんでした。どうやらバウンスのアニメーションが残っていると
完了するまで別アニメーションは無視されるか、無視はしていなくとも処理後にバウンス
のアニメーションを再開しているようです。
なんとかキャンセルできないものかと以下を試してみました。
[scrollview.layer removeAllAnimations];
しかし、バウンスがキャンセルされることはありませんでした。
stackoverflowで調べてみても有力な答えは見つからず、おそらくキャンセルはできない
との結論に達しました。

誰か偉い人教えて・・・

追記
キャンセルできました。
- (void)scrollViewDidEndDragging:(UIScrollView *)scrollView willDecelerate:(BOOL)decelerate {            
        if (scrollView.contentOffset.x < -30) {
            scrollView.bounces = NO;
        }
}
単純にキャンセルしたい段階(上記ではドラッグ終了時)でbouncesを無効に
すれば残りのアニメーションはキャンセルできるようです。
以前試していなかった自分が憎い・・・


拍手[0回]

PR