我已经尝试了我能想到的所有内容,包括我在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
})
}
Run Code Online (Sandbox Code Playgroud)
期望的行为和外观是Mail.app,它的动画效果非常好.
我在https://github.com/mdiep/NSSplitViewTest上有一个完整的示例应用程序.