मैंने एसओ और अन्य मेलिंग सूचियों पर यहां मिले सभी सुझावों के बारे में सोचने की कोशिश की है, लेकिन मैं यह नहीं समझ सकता कि ऑटो लेआउट चालू होने पर एनीमेशन के साथ NSSplitView
फलक प्रोग्रामेटिक रूप से कैसे ध्वस्त हो सकता है।ऑटो लेआउट का उपयोग करते समय एनीमेशन के साथ एक एनएसएसप्लिट व्यू फलक कैसे पतन करें?
यहाँ मैं अभी (मनोरंजन के लिए स्विफ्ट में लिखा) है, लेकिन यह कई मायनों में नीचे गिर जाता है:
@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: 'भेजने का प्रयास करें। –
@ केनहोम्स मैंने कोशिश की है। कोई पाँसा नहीं। – mdiep