4

我的应用程序中有一个自定义视图,它是分层支持的并嵌入在NSScrollView. 我允许用户放大(这是通过增加我的自定义视图的大小来实现的)。但是,我在放大任意点时遇到了麻烦,因为NSScrollView在我将其指向新的滚动点之前,它一直在阻碍并导致视图四处跳动(通常是视图的原点)。我真的很想使用 a CAScrollLayer,因为我知道我肯定可以使用它进行缩放并让它平滑移动,但是我失去了所有内置的滚动功能。

有什么方法可以CAScrollLayer在中利用NSScrollView,可能支持NSClipView?如果不是,CAScrollLayer实际上有什么目的?是否可以通过不同的方法自动更改视图的大小和滚动点并使其具有动画效果?

简而言之,是CAScrollLayer完全没用,还是大部分没用?

更新

CALayer通过创建一个子类来显示我的视图内容,我已经让我的内部视图少跳动了。我没有使用布局约束来调整大小,而是将其大小调整为-resizeWithOldSuperlayerSize:. 不过,我仍然无法同时更改视图的帧大小和原点并获得流畅的动画。要了解我要查找的内容,请在“预览”中打开图像并放大和缩小。它以平滑的方式围绕图像的中心进行缩放。

4

1 回答 1

0

在限制中,您可以使用 anNSScroller来代替;CAScrollLayer如果这是您的首选实现,那么您就可以使用。

请注意,在某些(较旧)版本的 Mac OS X 上,NSScroller有一个错误会导致它在其包含的视图上调用 Apple 私有方法。你会知道这是否会发生,因为你会得到一个关于你的自定义视图没有响应以“<code>_”开头的方法的异常。

于 2012-05-14T16:09:19.853 回答