6

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.

cevap

7

button.superview.wantsLayer = YES ekledikten sonra, yukarıdaki örnek doğru şekilde animasyonludur.

İlgili konular