2013-10-16 18 views
6

Voglio creare animazione soft tra le transizioni in semplice interfaccia utente:morbida animazione di scorrimento NSScrollView scrollToPoint:

first slidesecond slidethird slide

vista che si muoveva

view

Quando una chiamata scrollToPoint: per la vista di spostamento per indicare che la transizione non viene animata. Sono nuovo nella programmazione Cocoa (iOS è il mio background). E non so come usare correttamente .animator o NSAnimationContext.

Inoltre, ho letto la guida di animazione dell'anima ma non ho trovato la soluzione.

La fonte può essere portata sul Git Hub repository

Please help !!!

risposta

16

scrollToPoint non è animabile. Solo le proprietà animabili come i limiti e la posizione in NSAnimatablePropertyContainer sono animate. Non hai bisogno di fare nulla con CALayer: rimuovi i contenuti wantLayer e CALayer. Quindi con il seguente codice è animato.

- (void)scrollToXPosition:(float)xCoord { 
    [NSAnimationContext beginGrouping]; 
    [[NSAnimationContext currentContext] setDuration:5.0]; 
    NSClipView* clipView = [_scrollView contentView]; 
    NSPoint newOrigin = [clipView bounds].origin; 
    newOrigin.x = xCoord; 
    [[clipView animator] setBoundsOrigin:newOrigin]; 
    [_scrollView reflectScrolledClipView: [_scrollView contentView]]; // may not bee necessary 
    [NSAnimationContext endGrouping]; 
} 
+0

Grazie! Funziona! Ma come posso sapere se la proprietà è animabile o no? – WINSergey

-1

Grazie, @mahal Tertin In Swift

func scrollToPosition(pos:CGFloat){ 
    NSAnimationContext.beginGrouping() 
    NSAnimationContext.currentContext().duration = 0.5 
    var clip:NSClipView! 
    clip = self.scrollView.contentView 
    var newOrigin:NSPoint = clip.bounds.origin 
    newOrigin.x = pos 
    clip.animator().setBoundsOrigin(newOrigin) 
    self.scrollView.reflectScrolledClipView(self.scrollView.contentView) 
    NSAnimationContext.endGrouping() 
} 

Esso contribuirà a nuovi dev !!!!!

Problemi correlati