4

アプリケーションにカスタム ビューがあります。これは、レイヤーに支えられ、NSScrollView. ユーザーがズームインできるようにします (これは、カスタム ビューのサイズを大きくすることで実現されます)。ただし、任意のポイントにズームインするのに問題がありNSScrollViewます。これは、新しいスクロールポイントにポイントする前に、ビューが邪魔になり、ビューが (通常はビューの原点に) ジャンプするためです。を使用したいのCAScrollLayerですが、ズームを正しく使用してスムーズに移動できることはわかっていますが、組み込みのスクロール機能がすべて失われます。

CAScrollLayer内でNSScrollView活用する方法はありますNSClipViewか? そうでない場合、CAScrollLayer実際にはどのような目的に役立ちますか? 別のアプローチで、ビューのサイズとスクロールポイントをアトミックに変更してアニメーション化することは可能ですか?

要するに、CAScrollLayerまったく役に立たない、またはほとんど役に立たない?

アップデート

CALayerビューのコンテンツを表示するサブクラスを作成することで、内側のビューのジャンプが少なくなりました。レイアウトの制約でサイズ変更するのではなく、オーバーライドでサイズ変更します-resizeWithOldSuperlayerSize:。ただし、フレーム サイズとビューの原点を同時に変更して、スムーズなアニメーションを取得することはまだできません。探しているものを把握するには、プレビューで画像を開き、ズームインまたはズームアウトします。画像の中心をスムーズにズームします。

4

1 に答える 1

0

NSScroller制限では、代わりにを使用できます。CAScrollLayerそれがあなたの好みの実装である場合、そのように使用することができます。

Mac OS X の一部の (古い) バージョンでNSScrollerは、含まれているビューで Apple プライベート メソッドを呼び出すバグがあることに注意してください。カスタム ビューが '<code>_' で始まるメソッドに応答しないという例外が発生するため、これが発生するかどうかがわかります。

于 2012-05-14T16:09:19.853 に答える