gpt4 book ai didi

cocoa - 如何以原子方式制作滚动和缩放动画?

转载 作者:行者123 更新时间:2023-12-03 16:15:54 24 4
gpt4 key购买 nike

我的应用程序中有一个自定义 View ,它是分层支持的并嵌入到 NSScrollView 中。我允许用户放大(这是通过增加自定义 View 的大小来完成的)。不过,我在放大任意点时遇到了麻烦,因为 NSScrollView 不断妨碍并导致 View 在我将其指向新的点之前跳转(通常是 View 的原点)滚动点。我真的很想使用 CAScrollLayer,因为我知道我绝对可以使用它进行缩放并使其平滑移动,但随后我会丢失所有内置的滚动设施。

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

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

更新

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

最佳答案

在限制范围内,可以使用NSScroller来代替;这样您就可以使用 CAScrollLayer(如果这是您的首选实现)。

请注意,在某些(较旧)版本的 Mac OS X 上,NSScroller 有一个错误,导致它在其包含的 View 上调用 Apple 私有(private)方法。您会知道是否发生这种情况,因为您会收到有关自定义 View 未响应以“_”开头的方法的异常。

关于cocoa - 如何以原子方式制作滚动和缩放动画?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6626301/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com