2011-03-16 9 views
9

में एनीमेशन को कैसे अक्षम कर सकता हूं, जब आप एनएससीओलेक्शन व्यू का आकार बदलते हैं तो 'शफल' एनीमेशन बंद करना चाहते हैं। क्या यह संभव है?मैं एनएससीओलेक्शन व्यू

+0

इस पर कोई प्रगति एक? एक ही समस्या है और निजी एपीआई नहीं चाहते हैं। – Sunkas

उत्तर

3

10.6 के लिए, मैं एनएसवी व्यू को उप-वर्गीकृत करके एनीमेशन को अक्षम करने में सक्षम था, एनीमेशन ओवरराइडिंग फोर्के: और शून्य लौट रहा था। फिर सुनिश्चित करें कि आप प्रोटोटाइप के दृश्य के लिए उस दृश्य का उपयोग करते हैं।

+0

एनीमेशन नहीं है ForKey: CALayer पर, NSView नहीं? –

+0

यह एनएसएनिमैटेबलप्रॉपर्टीकंटनर प्रोटोकॉल का हिस्सा है जो एनएसवी व्यू के अनुरूप है। – kainjow

+0

एनीमेशनफोरकी को एनएससीओलेक्शन व्यू के मेरे वर्ग उप-वर्ग पर नहीं बुलाया जाता है। – voidref

7

यह काम करता है, लेकिन यह एक निजी आवृत्ति चर सेट कर रहा है ताकि मैक ऐप स्टोर में यह ठीक न हो।

[collectionView setValue:@(0) forKey:@"_animationDuration"]; 
3

कैनजो सही है। (! नहीं संग्रह दृश्य): इस जोड़ने:

1) उपवर्ग

- (id) animationForKey:(NSString *) key 
{ 
    return nil; 
} 
प्रोटोटाइप दृश्य उपवर्ग को

अक्षम एनिमेशन

0

मैं केवल अगर मैं निम्नलिखित किया था इस काम करने के लिए प्राप्त करने में सक्षम था यह विचार कि NSCollectionViewItem इसके दृश्य के रूप में उपयोग किया जाता है। उस उप-दृश्य दृश्य को एक कैलियर की आवश्यकता होती है और मैंने दृश्य उपclass को कैलियर के प्रतिनिधि के रूप में सेट किया है।

2) को लागू करें CALayer प्रतिनिधि विधि ताकि कोई एनीमेशन कार्यों में होने चाहिए:

override func actionForLayer(layer: CALayer, forKey event: String) -> CAAction? { 
     return NSNull() 
} 

3) अंत में, NSCollectionView डेटा स्रोत विधि में:

func collectionView(collectionView: NSCollectionView, itemForRepresentedObjectAtIndexPath indexPath: NSIndexPath) -> NSCollectionViewItem { 

    // get a new collection view item 
    .... 

    // disable animations 
    CATransaction.begin() 
    CATransaction.setDisableActions(true) 

    // populate your cell 
    .... 

    CATransaction.commit()  
} 
1

सभी संग्रह को देखने के एनीमेशन का निष्क्रिय करने के लिए स्विफ्ट में, कुछ एनिमेटेबल होने से पहले ऐसा करें:

NSAnimationContext.current.duration = 0 
+1

प्रतिभा समाधान – sumesh

संबंधित मुद्दे