開閉用三角ボタンのクリックに応じてビューを展開したいのですが、アニメーションが思うように実行されません。
(gif がループしていない場合は申し訳ありません。このツールはループ アニメーションを作成するはずでしたが、そうではなかったようです...)
拡大すると、外側のビューのサイズが即座に変更され、コンテンツが上向きにアニメーション化されて元の位置に戻ります。折りたたむと、再びサイズが瞬時に変化し、コンテンツがその中でスクロールします。私が欲しいのは、サイズの変更をアニメーション化して、囲んでいるビューの左上に相対的に移動せずにコンテンツを表示/非表示にすることです。
私のコードは次のようになります。
NSAnimationContext.runAnimationGroup({
context in
context.duration = 0.25
context.allowsImplicitAnimation = true
// Order is important so we don't get conflicting constraints
if newValue {
closedConstraint.isActive = false
openConstraint.isActive = true
}
else {
openConstraint.isActive = false
closedConstraint.isActive = true
}
layoutSubtreeIfNeeded()
}, completionHandler: {
self.disclosureButton.integerValue = newValue ? 1 : 0
})
openConstraint
囲んでいるビューの下部を最後のフィールドの下部に制限します。closedConstraint
上部のテキスト ラベルの下部に制限するため、ラベルのみが表示されます。
では、a) 囲んでいるビューの境界をアニメーション化し、b) アニメーション中にコンテンツを上部に固定するにはどうすればよいでしょうか?