在CATransition动画期间隐藏NSScrollView滚动条

时间:2018-10-27 04:19:17

标签: cocoa core-animation appkit nsscrollview catransition

我有一个NSScrollView,它在其文档视图中显示图像。我通过在滚动视图的图层中添加CATransition(推动)动画来在图像之间进行动画处理。这样,每个图像都可以以单独的放大倍数显示。

在过渡动画进行过程中,我需要隐藏滚动视图的(旧式)滚动条。我遇到的问题是,滚动条始终由过渡动画捕获。我在创建过渡动画或将其添加到图层之前禁用了滚动条,但它们仍被动画捕获。我正在使用-[NSResponder scrollWheel:]-[NSEvent trackSwipeEventWithOptions:dampenAmountThresholdMin:max:usingHandler:]通过滑动手势来驱动动画进度,因此我需要隐藏滚动器,然后立即创建动画并将其添加到图层。

我正在使用:

_scrollView.hasVerticalScroller = NO;
_scrollView.hasHorizontalScroller = NO;

我也尝试设置滚动条的alpha值和隐藏状态。据我所知,滚动视图在捕获到位图以用于动画之前不会重绘。

我还尝试调用以下每个方法来强制滚动视图在被动画捕获之前重新绘制。在禁用滚动器之后,但在创建过渡动画并将其添加到图层之前,我调用了这些方法:

  • [_scrollView reflectScrolledClipView:_scrollView.contentView]
  • [_scrollView tile]
  • [_scrollView setNeedsDisplay:YES]
  • [_scrollView display]

这是过渡动画中大约40%的屏幕截图。如您所见,旧版滚动条仍然可见。我希望将它们隐藏起来,以便在图像之间进行过渡时成为无缝的黑色背景。

谢谢

visible scrollers

0 个答案:

没有答案