Ho provato tutto quello che riesco a pensare, inclusi tutti i suggerimenti che ho trovato qui su SO e su altre mailing list, ma non riesco a capire come ridurre a livello di programmazione un riquadro NSSplitView
con un'animazione mentre Layout automatico è attivo.Come comprimere un riquadro NSSplitView con l'animazione mentre si utilizza il layout automatico?
Ecco quello che ho in questo momento (scritto in Swift per divertimento), ma cade in diversi modi:
@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
})
}
Il comportamento e l'aspetto desiderato è quello di Mail.app, che anima davvero bene.
Ho un'app completa di esempio disponibile a https://github.com/mdiep/NSSplitViewTest.
Prova a inviare '-setPosition: ofDividerAtIndex:' al proxy 'animator' della vista divisa. –
@KenThomases L'ho provato. Niente da fare. – mdiep