APPLE提供了三种storyboard segue的方式:push,modal,custom .

push segue是系统预定义的跳转方式,

为了使其能正常工作,我们还必须加载UINavigationController。

有时候,我们不想看到UINavigation bar,我们可以使用modal segue。

modal segue 的跳转方式有四种:Cover Vertical, Flip Horizontal, Cross Dissolve and Partial Curl。

要是我们想要的跳转方式与这四种方式都不同,我们可以使用自定义跳转方式custom segue。

下面是一个实现custom segue的样例:

1.创建一个UIStoryboardsegue的子类

2.重载-(void)perform 方法

 1 - (void) perform
 2 {
 3     UIViewController *desViewController = (UIViewController *)self.destinationViewController;
 4     
 5     UIView *srcView = [(UIViewController *)self.sourceViewController view];
 6     UIView *desView = [desViewController view];
 7     
 8     desView.transform = srcView.transform;
 9     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:];
     [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];
                      }];

70 }

在viewcontroller中,重载prepareforsegue方法

 1 - (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
 2 {
 3     HorizontalSlideSegue *s = (HorizontalSlideSegue *)segue;
 4     s.isDismiss = NO;
 5     
 6     if (UIDeviceOrientationIsLandscape([UIDevice currentDevice].orientation))
 7     {
 8         s.isLandscapeOrientation = YES;
 9     }
     else
     {
         s.isLandscapeOrientation = NO;
     }

14 }

3.选择custom segue 设置segue class为:customsegue(我们自定义的类)

4.使用代码方式调用segue:

IOS - Create Push Segue Animation Without UINavigationController的更多相关文章

  1. Xcode6 storyboard new push segue 后的视图控制器没有navigation item bug.

    手动切一下 老的push,再切回来,就会出有了,我想是一个bug. Xcode 6 Segue with UINavigationItem up vote0down votefavorite   I' ...

  2. iOS 核心动画 Core Animation浅谈

    代码地址如下:http://www.demodashi.com/demo/11603.html 前记 关于实现一个iOS动画,如果简单的,我们可以直接调用UIView的代码块来实现,虽然使用UIVie ...

  3. 对照 Android 的 Intent 与 iOS StoryBoard 的 Segue - Intent 假设也能添加个prepareForSegue回调就好了

    对照 Android 的 Intent 与 iOS StoryBoard 的 Segue - Intent 假设也能添加个prepareForSegue回调就好了 太阳火神的漂亮人生 (http:// ...

  4. IOS 7 Study - Implementing Navigation with UINavigationController

    ProblemYou would like to allow your users to move from one view controller to the other witha smooth ...

  5. IOS开发-UI学习-UINavigationController(导航控制器)的使用

    UINavigationController是IOS 中常用的功能,基本用法如下: 1.在AppDelegate.m中添加如下代码: #import "AppDelegate.h" ...

  6. iOS开发之Segue

    Storyboard上每一根用来界面跳转的线,都是一个UIStoryboardSegue对象(简称Segue). 每一个Segue对象,都有3个属性: (1)唯一标识 @property (nonat ...

  7. iOS开发之Core Animation

    在IOS中如果使用普通的动画则可以使用UIKit提供的动画方式来实现,如果想实现更复杂的效果,则需要使用Core Animation了. 在Core Animation中我们经常使用的是 CABasi ...

  8. ios 改变push方向,可以把present改为push方式

    - (void)pop{    CATransition* transition = [CATransition animation];    transition.duration = 0.5;   ...

  9. 一步一步实现iOS应用PUSH功能

    1. push原理 iOS push 工作机制可以用下图简要概括 Provider:应用自己的服务器: APNS:Apple Push Notification Service的简称,苹果的PUSH服 ...

随机推荐

  1. web性能优化——简介

    简介 性能优化的第一准则:加缓存.几乎绝大部分优化都围绕这个来进行的.让用户最快的看到结果. 性能优化的第二准则:最小原则.绝不提供多余的信息.比如,静态资源(图片.css.js)压缩,图片的滚动加载 ...

  2. ASP.NET Web API(三):安全验证之使用摘要认证(digest authentication)

    在前一篇文章中,主要讨论了使用HTTP基本认证的方法,因为HTTP基本认证的方式决定了它在安全性方面存在很大的问题,所以接下来看看另一种验证的方式:digest authentication,即摘要认 ...

  3. WebBrowser与IE的关系,如何设置WebBrowser工作在IE9、10、11模式下?

    Web Browser Control – Specifying the IE Version http://www.west-wind.com/weblog/posts/2011/May/21/We ...

  4. nios II--实验2——led硬件部分

    Led 硬件开发 新建原理图 1.打开Quartus II 11.0,新建一个工程,File -> New Project Wizard…,忽略Introduction,之间单击 Next> ...

  5. 深入理解拉格朗日乘子法(Lagrange Multiplier) 和KKT条件

    [整理]   在求解最优化问题中,拉格朗日乘子法(Lagrange Multiplier)和KKT(Karush Kuhn Tucker)条件是两种最常用的方法.在有等式约束时使用拉格朗日乘子法,在有 ...

  6. 简易版viewport

    首先这里涉及到虚拟像素和物理像素,不管是移动设备还是pc都存在这个概念1.在显示器精度还不是很高的年代,一个物理像素就等于一个虚拟像素,1000px的网页就占据了1000的物理像素(如果你玩过小霸王, ...

  7. mySql引擎

    摘自: http://www.cnblogs.com/sopc-mc/archive/2011/11/01/2232212.html MySql引擎很多,最常见的有InnoDB,MyISAM,NDM ...

  8. [转]jquery 点击表格变为input可以修改无刷新更新数据

    原文地址:http://www.freejs.net/article_biaodan_43.html 之前已经发了2篇类似的文章<点击变td为input更新>和<jquery表格可编 ...

  9. json-jsonConfig使用

    一,setCycleDetectionStrategy 防止自包含 /** * 这里测试如果含有自包含的时候需要CycleDetectionStrategy */ public static void ...

  10. 【HDU 5855】Less Time, More profit(网络流、最小割、最大权闭合子图)

    Less Time, More profit Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/O ...