实现Facebook messenger风格泛到全屏视图类似的效果

Par*_*t0z 9 xcode animation objective-c ios uipangesturerecognizer

我已经实现了UIPageviewContoller来支持屏幕半个底部的多个viewcontoller视图.现在我的问题是如何在我的网页浏览器控制器上支持这种子视图的Facebook样式平移效果.

我想实现他们已经在相机中应用的Facebook消息风格效果,用手指平移我们可以将视图作为全屏显示.当我们平移相同的视图时,它将在原始视角内进行调整.我已经附加了一些屏幕以便更好地理解.

子视图有平移手势 平移到全屏 pandown最小化 平移后重置为原始位置

它应该支持一体化的流行手势.

ienterative pop

我能够得到类似的效果,但为此我已经添加了视图到主窗口,所以视图可以平移到全屏但是通过这种方法我无法实现交互式弹出iOS默认手势,这种方法对我当前的pageviewcontoller实现不好.

如果在窗口中添加视图比用户按下后退按钮而不是窗口元素将不会移动它将保留在窗口中,因此窗口方法不好.

有没有其他方法可以获得类似的效果?UIViewControllerInteractiveTransitioning可能有用吗?

提前致谢.我知道我会从你们那里得到更好的方法,这比将子视图添加到窗口更稳定.

小智 1

您是否尝试过向子视图 A 添加滑动手势?

UISwipeGestureRecognizer *swipeUp = [[UISwipeGestureRecognizer alloc] initWithTarget:self action:@selector(didSwipeScreen:)];
swipeUp.direction = UISwipeGestureRecognizerDirectionUp;
[yourSubViewA addGestureRecognizer:swipeUp];
Run Code Online (Sandbox Code Playgroud)

它正在处理 -

- (void)didSwipeScreen:(UISwipeGestureRecognizer *)gesture {
switch (gesture.direction) {
    case UISwipeGestureRecognizerDirectionUp: {
        [UIView animateWithDuration:0.5 delay:0.0 options:UIViewAnimationOptionCurveLinear animations:^{
            [yourSubViewA setFrame:desiredFullScreenFrame];
        } completion:^(BOOL finished) {
        }];
    }
        break;
    default:
        break;
    }
}
Run Code Online (Sandbox Code Playgroud)

要恢复到默认位置,您可以使用 UISwipeGestureRecognizerDirectionDown 添加另一个滑动手势,或者只是点击手势。对于侧面菜单,MFSideMenu是不错的选择。