Ho un NSButton il cui fondo è a filo con il suo superview, e mi piacerebbe animarlo spostandolo verso l'alto in modo che la sua parte superiore sia a filo con il suo superview.Animando aggiungendo e rimuovendo NSLayoutConstraints, invece di regolare le costanti
WWDC 2012 Sessione 228: Le migliori pratiche per la gestione del layout automatico menziona due modi per animare le modifiche al layout (31:16) e sto tentando di utilizzare la tecnica CoreAnimation. L'esempio seguente sposta correttamente NSButton, ma lo fa istantaneamente e senza animazione.
[button.superview removeConstraint:pointerToBottomSpaceConstraint] ;
NSArray* topSpaceConstraintArray = [NSLayoutConstraint constraintsWithVisualFormat: @"V:|[button]"
options: 0
metrics: nil
views: NSDictionaryOfVariableBindings(button)] ;
[button.superview addConstraints:topSpaceConstraintArray] ;
[NSAnimationContext runAnimationGroup:^(NSAnimationContext* context) {
context.duration = 2 ;
context.allowsImplicitAnimation = YES ;
[button.superview layoutSubtreeIfNeeded] ;
} completionHandler:nil] ;
Posso aggiungere & rimuovere NSLayoutConstraints e lasciare Core Animation capire come animare il cambiamento? Sembra più semplice di me determinare la distanza tra la vecchia posizione del pulsante &, quindi regolare la costante di NSLayoutConstraint di quella quantità.