簡體   English   中英

如何使用Swift在Cocoa應用程序中對NSSlider值更改進行動畫處理

[英]How to animate NSSlider value change in Cocoa application using Swift

如何為NSSlider值更改設置動畫,使其看起來連續? 我嘗試使用NSAnimation上下文

  private func moveSlider(videoTime: VLCTime) {
    DispatchQueue.main.async { [weak self] in
        NSAnimationContext.beginGrouping()
        NSAnimationContext.current.duration = 1
        self?.playerControls.seekSlider.animator().intValue = videoTime.intValue
        NSAnimationContext.endGrouping()
    }
}

我的NSSlider仍然無法平穩移動。

為了讓您進入圖片,我正在嘗試制作一個使用NSSlider來擦洗電影的視頻播放器。 視頻繼續播放時,該滑塊也應移動。 就像我說的那樣,它確實可以移動,但是我無法使其平穩移動。

在Objective-C中有一個Apple示例代碼可以滿足您的實際需求。 下面是在Swift中的外觀。

基本上,您需要在NSSlider上進行擴展

extension NSSlider {

    override open class func defaultAnimation(forKey key: NSAnimatablePropertyKey) -> Any?{

        if key == "floatValue"{
            return CABasicAnimation()
        }else {
            return super.defaultAnimation(forKey: key)
        }
    }
}

然后,您可以在移動滑塊功能中簡單地使用類似的內容。

private func moveSlider(videoTime: Float) {

        NSAnimationContext.beginGrouping()
        NSAnimationContext.current.duration = 0.5
        slider.animator().floatValue = videoTime
        NSAnimationContext.endGrouping()

}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM