【发布时间】:2014-10-30 22:50:40
【问题描述】:
我已经尝试了所有我能想到的方法,包括我在 SO 和其他邮件列表中找到的所有建议,但我无法弄清楚如何在自动布局时以编程方式折叠带有动画的 NSSplitView 窗格已开启。
这是我现在所拥有的(为了好玩而用 Swift 编写的),但它以多种方式失败:
@IBAction func toggleSourceList(sender: AnyObject?) {
let isOpen = !splitView.isSubviewCollapsed(sourceList.view.superview!)
let position = (isOpen ? 0 : self.lastWidth)
if isOpen {
self.lastWidth = sourceList.view.frame.size.width
}
NSAnimationContext.runAnimationGroup({ context in
context.allowsImplicitAnimation = true
context.timingFunction = CAMediaTimingFunction(name: kCAMediaTimingFunctionEaseIn)
context.duration = self.duration
self.splitView.setPosition(position, ofDividerAtIndex: 0)
}, completionHandler: { () -> Void in
})
}
所需的行为和外观是 Mail.app 的行为和外观,它的动画效果非常好。
我在https://github.com/mdiep/NSSplitViewTest 有一个完整的示例应用程序。
【问题讨论】:
-
尝试将
-setPosition:ofDividerAtIndex:发送到拆分视图的animator代理。 -
@KenThomases 我试过了。没有骰子。
标签: cocoa appkit nssplitview