我的应用程序中有一个自定义视图,它是图层支持的,并嵌入在NSScrollView
中。我允许用户放大(这是通过增加我的自定义视图的大小来实现的)。但是,我无法放大任意点,因为NSScrollView
在我将其指向新滚动点之前不断阻碍并导致视图跳转(通常到视图的原点)。我真的想使用一个CAScrollLayer
,因为我知道我肯定可以使用它进行缩放并使其顺利移动,但之后我失去了所有内置的滚动功能。
有没有办法在CAScrollLayer
内利用NSScrollView
,可能支持NSClipView
?如果没有,CAScrollLayer
实际上有什么用途呢?使用不同的方法,是否有可能以原子方式更改视图的大小和滚动点并使其具有动画效果?
简而言之,CAScrollLayer
是完全无用的,还是大部分没用?
更新
我通过制作一个CALayer
子类来显示我的视图内容,从而使我的内部视图跳得更少。我没有使用布局约束来调整大小,而是在覆盖-resizeWithOldSuperlayerSize:
时调整大小。我仍然不能同时改变我的视图的帧大小和原点,并获得平滑的动画。要了解我正在寻找的内容,请在预览中打开图像并放大和缩小。它以平滑的方式放大图像的中心。
答案 0 :(得分:0)
在限制中,您可以使用NSScroller
代替;这样你就可以使用CAScrollLayer
,如果这是你首选的实现。
请注意,在某些(较旧)版本的Mac OS X上,NSScroller
有一个错误,导致它在其包含的视图上调用Apple私有方法。您会知道是否会发生这种情况,因为您会收到有关自定义视图未对“_
”开头的方法做出响应的例外情况。