Alt kısmının süper görünümüyle bir NSButton'ım var ve üst tarafın süper görüntüleriyle aynı hizada olmasını sağlamak için onu hareketlendirmek istiyorum.NSLayoutConstraints ekleyerek ve kaldırarak Animasyonlar sabitlemek yerine, Constance
WWDC 2012 Oturum 228: Mastering Auto Layout için En İyi Uygulamalar, düzen değişikliklerini canlandırmanın iki yolundan bahsetmektedir (31:16) ve CoreAnimation tekniğini kullanmaya çalışıyorum. Aşağıdaki örnek, NSButton'u doğru şekilde hareket ettirir, ancak anında ve animasyon içermez.
[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] ;
Ben & NSLayoutConstraints kaldırmak ekleyip CoreAnimation değişikliği animasyon anlamaya izin verir misiniz? Bu, düğmenin eski & yeni konumu arasındaki mesafeyi belirlemekten daha basit görünüyor, daha sonra NSLayoutConstraint'ın Sabit değerini bu miktarla ayarlıyor.