下部がスーパービューと同じ高さの NSButton があり、上部がスーパービューと同じ高さになるようにアニメーション化して上に移動したいと考えています。
WWDC 2012 セッション 228: 自動レイアウトをマスターするためのベスト プラクティスでは、レイアウトの変更をアニメーション化する 2 つの方法 (31:16) について言及しており、CoreAnimation 手法を使用しようとしています。以下の例では、NSButton を正しく移動しますが、アニメーションなしで瞬時に移動します。
[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] ;
NSLayoutConstraints を追加および削除して、CoreAnimation に変更をアニメーション化する方法を理解させることはできますか? ボタンの古い位置と新しい位置の間の距離を決定し、その量だけ NSLayoutConstraint の定数を調整するよりも簡単に思えます。