0

開閉用三角ボタンのクリックに応じてビューを展開したいのですが、アニメーションが思うように実行されません。

ここに画像の説明を入力

(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) アニメーション中にコンテンツを上部に固定するにはどうすればよいでしょうか?

4

1 に答える 1