3

ビューを位置 A から B にアニメーション化し、再び戻そうとしています。以前は、次のようにして B にアニメーション化していました。

[UIView animateWithDuration:1 animations:^{
    self.myView.transform = CGAffineTransformMakeTranslation(100, 0);
}];

そして、これをアニメーション化して A に戻します。

[UIView animateWithDuration:1 animations:^{
    self.myView.transform = CGAffineTransformMakeTranslation(0, 0);
}];

元の位置を知る必要はありません。

自動レイアウトでは、次のコードを使用して位置 B にアニメーション化しています。

self.myLeadingConstraint.constant = 100;

[UIView animateWithDuration:1 animations:^{
    [self.view layoutIfNeeded];
}];

別の変数を作成したり、初期値を確認するために IB を調べたりすることなく、以前の定数値を取得する方法はありますか? これをすべて行うより良い方法はありますか?

前もって感謝します。

4

1 に答える 1

5

いいえ、それが最も簡単な方法です。自動レイアウトをアニメーション化するためのオプションは次のとおりです。

  • ブロック内で layoutIfNeeded を呼び出します。翻訳するだけの場合は、定数のみを変更してください。
  • ビューの代わりにレイヤーをアニメーション化します。
  • 制約を削除し、オートサイジング マスクを使用します。
  • コンテナー ビューを使用して、そのコンテナーをアニメーション化します。
  • 干渉しない拘束を使用します。
  • viewDidLayoutSubviews でフレームを設定します。

以前の定数値を取得するとはどういう意味ですか? それはすでに self.myLeadingConstraint.constant にありませんか?

于 2013-07-03T11:31:29.950 に答える