Ios 将UIView滑出屏幕

Ios 将UIView滑出屏幕,ios,objective-c,uiview,gesture,uigravitybehavior,Ios,Objective C,Uiview,Gesture,Uigravitybehavior,我希望能够有一个UIView(或者,如果必要的话,UIViewController),它可以从屏幕上“拖动”/轻弹/轻扫-但锁定到垂直轴(这样视图可以从屏幕上向上或向下显示下面的视图)。这有点像Facebook应用程序的网络视图 这可能是通过UIGravityBehavior实现的吗 任何想法都会很棒。我不久前使用UIPangestureRecognitor做了类似的事情。这将如何工作: float slidingMenuOffsetSum; - (void)handleSliding

我希望能够有一个UIView(或者,如果必要的话,UIViewController),它可以从屏幕上“拖动”/轻弹/轻扫-但锁定到垂直轴(这样视图可以从屏幕上向上或向下显示下面的视图)。这有点像Facebook应用程序的网络视图

这可能是通过UIGravityBehavior实现的吗


任何想法都会很棒。

我不久前使用UIPangestureRecognitor做了类似的事情。这将如何工作:

float slidingMenuOffsetSum;

    - (void)handleSlidingMenuPan:(UIPanGestureRecognizer *)gestureRecognizer {
        CGPoint translation = [gestureRecognizer translationInView:_slidingMenuView];

        slidingMenuOffsetSum += translation.y;
        CGPoint newSlidingMenuCenter = CGPointMake(_slidingMenuView.center.x, _slidingMenuView.center.y + translation.y);

        if (_slidingMenuView.frame.origin.y <= 512 && _slidingMenuView.frame.origin.y >= 0) {
            _slidingMenuView.center = newSlidingMenuCenter;
        }

        [gestureRecognizer setTranslation:CGPointZero inView:_slidingMenuView];

        if (gestureRecognizer.state == UIGestureRecognizerStateEnded) {
            [UIView animateWithDuration:0.3
                animations:^{
                    [_slidingMenuView setUserInteractionEnabled:false];
                    if (slidingMenuOffsetSum > 0) {
                        if (slidingMenuOffsetSum > _slidingMenuView.frame.size.height / 4) {
                            [self setSlidingMenuHidden:false];
                        } else {
                            [self returnSlidingMenuToPosition];
                        }
                    } else {
                        if (slidingMenuOffsetSum < -_slidingMenuView.frame.size.height / 4) {
                            [self setSlidingMenuHidden:true];
                        } else {
                            [self returnSlidingMenuToPosition];
                        }
                    }
                }
                completion:^(BOOL finished) {
                    slidingMenuOffsetSum = 0;
                    [_slidingMenuView setUserInteractionEnabled:true];
                }];
        }
    }
float-slidingMenuOffsetSum;
-(无效)handleSlidingMenuPan:(UIPangestureRecognitor*)手势识别器{
CGPoint translation=[GestureRecognitor TranslationView:_slidingMenuView];
SlidengMenuOffsetsum+=translation.y;
CGPoint newSlidingMenuCenter=CGPointMake(_slidingMenuView.center.x,_slidingMenuView.center.y+translation.y);
如果(_slidengmenuview.frame.origin.y=0){
_slidingMenuView.center=newSlidingMenuCenter;
}
[GestureRecognitor setTranslation:CGPointZero-inView:_-slidingMenuView];
if(GestureRecognitzer.state==UIGestureRecognitzerStateEnded){
[UIView animateWithDuration:0.3
动画:^{
[\u SlidengMenuView setUserInteractionEnabled:false];
如果(滑动菜单偏移量>0){
如果(滑动菜单设置sum>\u滑动菜单视图.frame.size.height/4){
[自设置LidingMenuHidden:false];
}否则{
[自动返回滑动菜单自动定位];
}
}否则{
如果(滑动菜单偏移量<--U滑动菜单视图.框架.尺寸.高度/4){
[自设置LidingMenuHidden:true];
}否则{
[自动返回滑动菜单自动定位];
}
}
}
完成:^(布尔完成){
滑动菜单设置值=0;
[\u SlidengMenuView setUserInteractionEnabled:true];
}];
}
}
您可以调整滑动菜单可以移动的值,以及用于检测视图是否应返回其原始位置或例如离开屏幕的阈值