Ich habe alles versucht, was ich denken kann, einschließlich aller Vorschläge, die ich hier auf SO und in anderen Mailinglisten gefunden habe, aber ich kann nicht herausfinden, wie man einen NSSplitView
Bereich mit einer Animation bei aktiviertem Auto Layout programmatisch einstellt.Wie verkleinert man einen NSSsplitView-Bereich mit Animation bei Verwendung von Auto Layout?
Hier ist, was ich jetzt habe (geschrieben in Swift zum Spaß), aber es fällt auf vielfältige Weise nach unten:
@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
})
}
Das gewünschte Verhalten und Aussehen, das von Mail.app ist, das ist wirklich schön animiert.
Ich habe eine vollständige Beispiel-App verfügbar unter https://github.com/mdiep/NSSplitViewTest.
Versuchen Sie '-setPosition: ofDividerAtIndex:' an den 'animator'-Proxy der Split-Ansicht zu senden. –
@KenThomases Ich habe das versucht. Kein Würfel. – mdiep