2011-10-28 6 views
5

Sto passando dalla programmazione di iPhone a applicazioni native Mac. Una parte che mi manca è la semplicità del sistema di animazione UIView.Come animare lo stile di UIView nello sviluppo di app Cocoa/Mac

ho avuto i seguenti due metodi per una sottoclasse UIView:

-(void) hide{ 
    _isHidden=YES; 
    [UIView commitAnimations]; 
    [UIView beginAnimations:nil context:nil]; 
    [UIView setAnimationCurve:UIViewAnimationCurveEaseInOut]; 
    [UIView setAnimationDuration:0.5]; 
    self.alpha = 0; 
    [UIView commitAnimations]; 
} 
-(void) show{ 
    _isHidden=NO; 
    [UIView commitAnimations]; 
    [UIView beginAnimations:nil context:nil]; 
    [UIView setAnimationCurve:UIViewAnimationCurveEaseInOut]; 
    [UIView setAnimationDuration:0.5]; 
    self.alpha = 1; 
    [UIView commitAnimations];  
} 

Ora io non sono sicuro di come eseguire questa in Cocoa. Ho provato quanto segue ma non sono sicuro che funzioni come dovrebbe.

-(void) hide{ 
    [[_myView animator] setAlpha:0]; 
} 

io chiamo questa funzione (nascondere) più volte a volte mentre la funzione di dissolvenza potrebbe essere ancora in esecuzione.

risposta

15

Questo dovrebbe produrre lo stesso risultato il tuo codice di iOS:

[NSAnimationContext beginGrouping]; { 
    [[NSAnimationContext currentContext] setDuration:.5]; 
    [[NSAnimationContext currentContext] setTimingFunction:[CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut]]; 
    [_myView.animator setAlphaValue:0.0]; 
} [NSAnimationContext endGrouping]; 

La durata predefinita è .25 secondi. Non sono sicuro di quale sia la funzione di temporizzazione predefinita. Se stai bene con i valori predefiniti, puoi dire questo:

[_myView.animator setAlphaValue:0.0]; 
+1

Non dimenticare di "#importare ' –

Problemi correlati