cocoa - Cacao: Animación NSView
fade nsviewanimation (1)
El enfoque moderno es mucho más fácil:
[NSAnimationContext runAnimationGroup:^(NSAnimationContext *context) {
context.duration = 1;
view.animator.alphaValue = 0;
}
completionHandler:^{
view.hidden = YES;
view.alphaValue = 1;
}];
Si la jerarquía de vistas está respaldada por capas, en realidad es suficiente:
view.animator.hidden = YES;
Esto es tan simple como puede ser, por lo que no puedo por mi vida encontrar lo que está mal, miré a través de la documentación como una guía pero todavía no funcionó. Tengo una vista dentro de una vista más grande. Una IBAction se supone que desvanece la vista interior ... eso es todo. Esto es lo que tengo:
NSViewAnimation *theAnim;
NSMutableDictionary *viewDict;
// Create the attributes dictionary for the view.
viewDict = [NSMutableDictionary dictionaryWithCapacity:2];
// Set the target object to be the view.
[viewDict setObject:_innerView forKey:NSViewAnimationTargetKey];
// Set this view to fade out
[viewDict setObject:NSViewAnimationFadeOutEffect forKey:NSViewAnimationEffectKey];
theAnim = [[NSViewAnimation alloc] initWithViewAnimations:@[viewDict]];
// Set some additional attributes for the animation.
[theAnim setDuration:1.0];
// Run the animation.
[theAnim startAnimation];
Revisé viewDict y theAnim con NSLogs y ninguno es nulo. Casi copié esto de un programa antiguo que tenía donde funcionaba, no puedo encontrar lo que está mal ahora.
Estoy en xcode 5.1.1, gracias por la ayuda.