我正在尝试创建一个动画,允许用户从窗口的一侧拉出一个面板。少量视图将在右上角可见,通过拉动它,视图将向外旋转,固定在屏幕的右下角。希望这些图像显示了我想要实现的目标(右侧的纸张表明视图的一部分将被隐藏。我希望用户能够拖动它,而不是滑动或点击。
谁能指出我如何实现这一目标的正确方向?我对 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]];
}
}
}