0

我在故事板中定义了一个常规的全屏视图控制器。它没有导航控制器。当用户点击一个按钮时,我想展示另一个包装在导航控制器中的视图控制器。目前我正在使用模态segue。我希望使用“推”样式从右侧发生这种模态转换。我将自己处理“返回”/弹出事件。

到目前为止,我还无法弄清楚这一点。当没有导航控制器时,是否有一些自定义 segue 类可以模拟推送?

4

3 回答 3

1

我通常使用一种技术来计算屏幕尺寸。然后,为屏幕中心、屏幕右侧和屏幕左侧计算出一个矩形,然后制作动画。

这段代码是一个动画函数,就好像一个新视图将当前视图推到左边一样。viewComing是即将进入视野的视野。viewGoing是当前可见的视图。

- (void) animateToLeft:(UIView*)viewComing andViewGoing:(UIView*)viewGoing {
    CGRect screenRect = [UIScreen mainScreen].bounds;
    CGRect left = screenRect;
    CGRect center = screenRect;
    CGRect right = screenRect;

    left.origin.x -= screenRect.size.width;
    right.origin.x += screenRect.size.width;

    viewGoing.frame = center;
    viewComing.frame = right;

    [UIView animateWithDuration:0.4 animations:^{
        viewComing.frame = center;
        viewGoing.frame = left;
    }];
}
于 2013-06-10T12:32:01.850 回答
1

您可以使用它自己的导航控制器,并且有一个用于隐藏导航栏的属性,请参见this。寻找导航栏隐藏。

于 2013-06-10T12:33:39.453 回答
1

试试这段代码:

UIViewController *sourceViewController = self ;
UIViewController *destinationController = objdestinationViewController;

CATransition* transition = [CATransition animation];
transition.duration = .25;
transition.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut];
transition.type = kCATransitionPush; //kCATransitionMoveIn; //, kCATransitionPush, kCATransitionReveal, kCATransitionFade
transition.subtype = kCATransitionFromRight; //kCATransitionFromLeft, kCATransitionFromRight, kCATransitionFromTop, kCATransitionFromBottom

[self.view.layer addAnimation:transition forKey:kCATransition];

[self.view addSubview:destinationController.view];
于 2013-06-10T12:52:46.840 回答