ios segues没有导航控制器

前端之家收集整理的这篇文章主要介绍了ios segues没有导航控制器前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我想用故事板来创建我的应用程序.
我可以找到很多关于如何使用导航或tabcontroller的信息,但我不是其中之一.

我的目标是创建一个具有不同视图但不使用导航或tabcontroller的应用程序.
我该怎么做?

解决方法

IOS故事板中,如果您不想使用导航,那么您不能使用push segue.然后,您可以使用模态segue或自定义segue.在模态segue中,有四种转换:

>覆盖垂直
>水平翻转
>交叉溶解
>局部卷曲

然而,所有这些预定义的segue动画都不能预先形成水平滑动动画segue.如果要使用水平滑动效果,则必须使用自定义segue.你需要覆盖这样的函数

- (void) perform
{
UIViewController *desViewController = (UIViewController *)self.destinationViewController;

UIView *srcView = [(UIViewController *)self.sourceViewController view];
UIView *desView = [desViewController view];

desView.transform = srcView.transform;
desView.bounds = srcView.bounds;

if(isLandscapeOrientation)
{
    if(isDismiss)
    {
        desView.center = CGPointMake(srcView.center.x,srcView.center.y  - srcView.frame.size.height);
    }
    else
    {
        desView.center = CGPointMake(srcView.center.x,srcView.center.y  + srcView.frame.size.height);
    }
}
else
{
    if(isDismiss)
    {
        desView.center = CGPointMake(srcView.center.x - srcView.frame.size.width,srcView.center.y);
    }
    else
    {
        desView.center = CGPointMake(srcView.center.x + srcView.frame.size.width,srcView.center.y);
    }
}


UIWindow *mainWindow = [[UIApplication sharedApplication].windows objectAtIndex:0];
[mainWindow addSubview:desView];

// slide newView over oldView,then remove oldView
[UIView animateWithDuration:0.3
                 animations:^{
                     desView.center = CGPointMake(srcView.center.x,srcView.center.y);

                     if(isLandscapeOrientation)
                     {
                         if(isDismiss)
                         {
                             srcView.center = CGPointMake(srcView.center.x,srcView.center.y + srcView.frame.size.height);
                         }
                         else
                         {
                             srcView.center = CGPointMake(srcView.center.x,srcView.center.y - srcView.frame.size.height);
                         }
                     }
                     else
                     {
                         if(isDismiss)
                         {
                             srcView.center = CGPointMake(srcView.center.x + srcView.frame.size.width,srcView.center.y);
                         }
                         else
                         {
                             srcView.center = CGPointMake(srcView.center.x - srcView.frame.size.width,srcView.center.y);
                         }
                     }
                 }
                 completion:^(BOOL finished){
                     //[desView removeFromSuperview];
                     [self.sourceViewController presentModalViewController:desViewController animated:NO];
                 }];
}

如果您仍有问题,可以查看此帖子.它还有一个youtube视频,向您展示如何实现此自定义segue:

Create Push Segue Animation Without UINavigation Controller

猜你在找的Xcode相关文章