Hatena::Groupiphone-dev

iOS プログラミングメモ

2013-08-12 (Mon)

NSScrollViewをアニメーションしながらスクロールさせる 17:18 NSScrollViewをアニメーションしながらスクロールさせる - iOS プログラミングメモ を含むブックマーク

こんな何でも無いことが、意外とめんどくさいのよね。

特定の位置までスクロールさせるだけなら、以下のような感じ。アニメーションはしない。

NSScrollView *scrollView = ...;
[scrollView.documentView scrollPoint:NSMakePoint(x, y)];

NSViewはNSAnimatablePropertyContainerていうなかなか便利なプロトコルが使えるようになっていて、animatorていうプロキシを通すと勝手にアニメーションしてくれる。たとえば以下のようにframeの値を変えると、アニメーションしながらリサイズしてくれる。

NSView *someView = .../
[[someView animator] setFrame:NSMakeRect(x, y, width, height)];

という感じでscrollPointもanimatorを通せばアニメーションしてくれる…と思いきや、これは全然うまく動かない。アニメーションなしで、ぱっと切り替わる。

[[scrollView.documentView animator] scrollPoint:NSMakePoint(x, y)];

どうもよくわかんないんだけど、自前でアニメーション用のコードを書かないといけないっぽい雰囲気。Duxっていうエディタのコードに、まさにそのものが含まれているらしい。

というわけで、最終的にこんな感じに。

[DuxScrollViewAnimation animatedScrollToPoint:NSMakePoint(x, y) inScrollView:scrollView];

しかしまだなんか位置が微妙にずれてる気がしないでもないが…。アニメーションはするようになった。

ちなみのDuxは Unlicense なる結構自由なライセンスのようです。ステキ。

トラックバック - http://iphone-dev.g.hatena.ne.jp/ktakayama/20130812