そのため、ビューが画面から飛び出し、ユーザーのジェスチャーに基づいて再び飛び出す単純なアニメーションを作成する必要がありました。私のアニメーション コード (以下) は非常にうまく機能します。実際、それは少しうまく機能しすぎています。enterStage メソッドでビューの位置を変更していないことに注目してください。スケールを 1 に設定しただけです。ビューが飛んで、元の位置にうまく巻き付きます。代わりに CGAffineTransformMakeTranslation を実行し、スケールを実行しない場合も完全に機能します。元のサイズと位置を自分で追跡する必要があると思っていましたが、これは少し不気味に行われたようです。
これは謎です。
元のサイズと位置に関するこのデータはどこに保持されていますか? ビューに元の位置を記憶させたくない場合など、必要に応じてこの動作を無効にするにはどうすればよいですか?
-(void) exitStage{
[UIView animateWithDuration:0.5
delay:0
options:UIViewAnimationOptionBeginFromCurrentState
animations:(void (^)(void)) ^{
CGAffineTransform t = CGAffineTransformMakeTranslation(0, -1000);
self.transform = CGAffineTransformScale (t, 10.0, 10.0);
}
completion:^(BOOL finished){
}];
}
-(void) enterStage{
[UIView animateWithDuration:0.5
delay:0
options:UIViewAnimationOptionBeginFromCurrentState
animations:(void (^)(void)) ^{
//self.transform = CGAffineTransformMakeTranslation(0, self.originalYcoord);
self.transform = CGAffineTransformMakeScale(1,1);
}
completion:^(BOOL finished){
}];
}