ユーザーがウィンドウの側面からパネルを引き出すことができるアニメーションを作成しようとしています。ビューの一部が右上に表示され、それを引っ張るとビューが外側に回転し、画面の右下に固定されます。うまくいけば、これらの画像は私が達成したいことを示しています (右側の紙のシートは、ビューの一部が非表示になることを示しています。スワイプやタップではなく、ユーザーがドラッグできるようにしたいと考えています。
これを達成する方法について、誰かが私を正しい方向に向けることができますか? 私はiOSでのアニメーションにはかなり慣れていません。パン ジェスチャが機能するようになりましたが、回転するにはこのポイントが必要です。ビューの.center
プロパティを設定できますが、そうするとビュー全体がそのポイントに移動するだけなので、center
実際にはビューの中央ではない回転元が必要だと思いますか?
編集:動作するメソッドを作成しましたが、ビューがユーザーの指に「くっついて」いません。指をドラッグして、たとえば 45 度回転させることはできますが、ビューはそれ以上移動します。それらを同期する方法がわからないのですが、何かアイデアはありますか?
- (void) swipeSidebarOpen: (UIPanGestureRecognizer *) recognizer {
//[self openOrCloseSideBar: YES];
_sidebarView.layer.anchorPoint = CGPointMake(1.0, 1.0);
_sidebarView.layer.position = CGPointMake(510, 330);
UIView *shuttle = [recognizer view];
if ([recognizer state] == UIGestureRecognizerStateBegan || [recognizer state] == UIGestureRecognizerStateChanged) {
CGPoint vel = [recognizer velocityInView:[recognizer view]];
if (vel.x > 0) {
[recognizer view].transform = CGAffineTransformRotate([[recognizer view] transform], M_PI / 80.0f);
[recognizer setTranslation: CGPointZero inView:[shuttle superview]];
} else {
[recognizer view].transform = CGAffineTransformRotate([[recognizer view] transform], -M_PI / 80.0f);
[recognizer setTranslation: CGPointZero inView:[shuttle superview]];
}
}
}