我正在尝试重现新iOS Google地图应用程序的上滑菜单的行为.
所以基本上它是一个视图,您可以向上滑动以平移到某个点或向下滑动到某个点.此视图也可以像分页滚动视图一样向右和向左滑动.
它应该向上或向下滚动或向侧面滑动,但不能同时向两侧滑动.
经过大量的研究和测试后,我有一些接近但不太合适的东西.
我的实现是一个UIScrollView,框架为320x400,内容视图为960x400,带有分页滚动.然后我添加一个UIPanGestureRecognizer来处理整个视图的向上滑动.
这是PanRecognizer的handleTouch IBAction:
- (IBAction)handlePan:(UIPanGestureRecognizer *)sender {
NSLog(@"Panning");
CGPoint translatedPoint = [(UIPanGestureRecognizer*)sender translationInView:self.view];
if([(UIPanGestureRecognizer*)sender state] == UIGestureRecognizerStateBegan) {
_firstX = [[sender view] center].x;
_firstY = [[sender view] center].y;
}
if (!IS_IPHONE_5) {
if (_firstY < 216)
translatedPoint = CGPointMake(_firstX, 216);
else
translatedPoint = CGPointMake(_firstX, _firstY+translatedPoint.y);
}
else {
if (_firstY < 307)
translatedPoint = CGPointMake(_firstX, 307);
else
translatedPoint = CGPointMake(_firstX, _firstY+translatedPoint.y);
}
[[sender view] setCenter:translatedPoint];
if([(UIPanGestureRecognizer*)sender state] == UIGestureRecognizerStateEnded) {
CGFloat velocityY = (0.2*[(UIPanGestureRecognizer*)sender velocityInView:self.view].y); …Run Code Online (Sandbox Code Playgroud)