我想用故事板来创建我的应用程序.
我可以找到很多关于如何使用导航或tabcontroller的信息,但我不是其中之一.
我可以找到很多关于如何使用导航或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: