gpt4 book ai didi

swift - NSSplitViewItem.isCollapsed 忽略动画持续时间

转载 作者:行者123 更新时间:2023-11-30 10:46:55 27 4
gpt4 key购买 nike

我正在尝试像这样折叠 NSSplitViewItem

NSAnimationContext.runAnimationGroup({ context in
context.duration = 0.1
context.allowsImplicitAnimation = true
searchItem.isCollapsed = collapsed
}, completionHandler: {
// do stuff
})

无论我设置什么持续时间,折叠动画的动画持续时间都不会改变。

设置 CATransaction 的持续时间也不起作用。

检查头文件,它提到了这一点:

The exact animation used can be customized by setting it in the -animations dictionary with a key of "collapsed".

这引发了更多问题。我什么时候设置这个动画?我用什么键路径来制作这个动画?它期望什么值?等等...我想做的就是改变它的持续时间。

解决方案:

根据 @Loengard 的回答,这就是我所选择的

NSAnimationContext.runAnimationGroup { _ in
let animation = CABasicAnimation(keyPath: nil)
animation.duration = 0.1

searchItem.animations["collapsed"] = animation
searchItem.animator().isCollapsed = collapsed
}

最佳答案

头文件引用的字典是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

}) { }

关于swift - NSSplitViewItem.isCollapsed 忽略动画持续时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55570683/

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