我正试图像这样折叠NSSplitViewItem
NSAnimationContext.runAnimationGroup({ context in
context.duration = 0.1
context.allowsImplicitAnimation = true
searchItem.isCollapsed = collapsed
}, completionHandler: {
// do stuff
})
无论我为duration
设置了什么,折叠动画的动画持续时间都不会改变。
在CATransaction
上设置持续时间也不起作用。
检查头文件时,它会提到:
可以通过设置使用的确切动画进行自定义 在-animations词典中,键为“ collapsed”。
这引发了更多问题。什么时候设置此动画?我要为该动画设置什么关键路径动画?它期望/从价值中得到什么?等等...我要做的就是更改其持续时间。
解决方案:
根据@Loengard的回答,这就是我的目的
NSAnimationContext.runAnimationGroup { _ in
let animation = CABasicAnimation(keyPath: nil)
animation.duration = 0.1
searchItem.animations["collapsed"] = animation
searchItem.animator().isCollapsed = collapsed
}
答案 0 :(得分:0)
头文件引用的字典是searchItem.animations
。您无需指定fromValue或toValue,只需像这样自定义持续时间:
NSAnimationContext.runAnimationGroup({ context in
context.duration = 0.1
context.allowsImplicitAnimation = true
let collapseAnimation = CABasicAnimation(keyPath: "collapsed")
collapseAnimation.duration = 0.1
var existingAnimations = searchItem.animations
existingAnimations["collapsed"] = collapseAnimation
searchItem.animations = existingAnimations
searchItem.isCollapsed = !searchItem.isCollapsed
}) { }