の使用の下でビューを移動、私は、しかしのアニメーションは/私は別のの位置からのビューを移動したい自動レイアウト
self.view.center = CGPointMake(100, 200);
を使用して、それを実装することができ、その後、ビューが戻ってきます実行後の元の位置へ:
実際にビューを新しい位置に移動するにはどうすればよいですか?
の使用の下でビューを移動、私は、しかしのアニメーションは/私は別のの位置からのビューを移動したい自動レイアウト
self.view.center = CGPointMake(100, 200);
を使用して、それを実装することができ、その後、ビューが戻ってきます実行後の元の位置へ:
実際にビューを新しい位置に移動するにはどうすればよいですか?
autoLayoutを使用している場合は、制約を変更する必要があります。提案されている方法は、ビューコントローラにコンセントをコンセントにすることです。コンストレインの定数を変更します。時間があれば、私は間違いなくgoing hereをお勧めし、 "例で自動レイアウト"または "自動レイアウトをマスターするためのベストプラクティス"を見てください。彼らは私を助けてくれました。私は、取り除くべきポイントは、autoLayoutを使うと、もはやフレームの観点から考えないということです。だから、センターを設定するだけでは、自動レイアウトでは機能しません。それは、どのようにビューが互いに関連しているかということです。
AutoLayout
を有効にすると、FORGET FRAMES
となり、アニメーション化するためにもフレームやセンターを変更することはできなくなります。レイアウトが呼び出されると、ビューの元の位置に戻ります。
代わりに同じ効果を得るにはconsider changing the constant value of the constraint
にする必要があります。
以下の画像のようなユーザーインターフェイスを考えてみましょう。20 points leading space from it's superview
の画像ビューを持っています。つまり、スーパービューとの水平スペースの制約があります。さらに、画像ビュー、上部、幅、高さ。
画像に示すように、画像を左から右にアニメーション表示する方法を示します。
私たちはアニメーション化する必要があるためにIBOutletを作成します。ここでは、このビューを左から右に移動するのに十分な水平スペース制約のみをとります。 Go Away
アクションインサイド
@property (weak, nonatomic) IBOutlet UIImageView *imageView;
@property (weak, nonatomic) IBOutlet NSLayoutConstraint *horizontalSpaceConstraint;
、私たちは、この制約の一定の値を更新する必要があります。
- (IBAction)moveFrontAction:(id)sender {
self.horizontalSpaceConstraint.constant = 220;
[UIView animateWithDuration:0.5 animations:^{
[self.imageView layoutIfNeeded];
}];
}
は今、ビューは単にアニメーションブロック内ので、我々は生産versa.In右と副左から素敵なアニメーションを見ることができるようになりますことをやって右end.I'mに移動させなければならない、我々このような値をハードコードするべきではありません。コンセプトを明確にするために、ここでそれを行うだけです。 Come Back
アクションインサイド
、我々は再び、それは元の値ですので、あなたが戻って元の場所にアニメーションオレンジ色の画像を見ることができるの定数をリセットしています。
- (IBAction)moveBackAction:(id)sender {
self.horizontalSpaceConstraint.constant = 20;
[UIView animateWithDuration:0.5 animations:^{
[self.imageView layoutIfNeeded];
}];
}
これは私の問題を解決していただきありがとうございます。 – jdog
ちょっとuser1687717は、アニメーションスタイルを使用しないビューのタッチメソッドを使ってビューをスクロールしたいと考えています。 –
制約の定数を変更する前に、 '[self.imageView layoutIfNeeded]'を呼び出す方が良いでしょう。ここには何の影響もありませんが、実際のプロジェクトでは他のアニメーションが実行されている可能性があります。従ってあなたのImageViewのがanimating.-前に、最終フレームをkhowなければならない '(IBAction)moveBackAction:(ID)、送信者{ [self.imageView layoutIfNeeded]。 self.horizontalSpaceConstraint.constant = 20; [UIView animateWithDuration:0.5アニメーション:^ { [self.imageView layoutIfNeeded]; }]; } ' –
私はこれが最初では難しいですが、私は実際に良いことを好きに始めています、そのビュー – user1687717
のすべてのコンセントを取得する必要がありますので、その使用して自動レイアウトは、ビューを移動するには、フレームを使用してより硬いようですね。あなたはそれでより多くを行うことができ、ここで第二@ClintWarnerを –
:自動レイアウトは最初のセットアップに少しより多くの努力することができますが、それはメンテナンスや読みやすさの面で巨大な配当を支払います。今私は制約を実装することに慣れています。フレーム数学を使って作業するのは面倒で面倒なようです。 – followben