如何使用 Swift 为 Cocoa 应用程序中的 NSLider 值更改设置动画
Posted
技术标签:
【中文标题】如何使用 Swift 为 Cocoa 应用程序中的 NSLider 值更改设置动画【英文标题】:How to animate NSSlider value change in Cocoa application using Swift 【发布时间】:2019-01-17 22:38:54 【问题描述】:如何为 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 来浏览电影。随着视频的继续,该滑块也应该移动。正如我所说,它确实会移动,但我无法让它顺利移动。
【问题讨论】:
【参考方案1】:objective-C 中有一个Apple sample code,正是您要查找的内容。下面是它在 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()
【讨论】:
在 Swift 5 中效果很好。谢谢 Marc!以上是关于如何使用 Swift 为 Cocoa 应用程序中的 NSLider 值更改设置动画的主要内容,如果未能解决你的问题,请参考以下文章