Nello storyboard IOS, se non si desidera utilizzare la navigazione, non è possibile utilizzare push segue. Quindi, puoi utilizzare i passaggi modali o quelli personalizzati. Nel segue modal, ci sono quattro passaggi:
- copertura verticali
- flip orizzontale
- Croce sciogliere
- Curl parziale
Tuttavia, tutte queste animazioni predefinite Segue non può segue animazione orizzontale scorrevole preforme. Se si desidera utilizzare l'effetto di scorrimento orizzontale, è necessario utilizzare i passaggi personalizzati. È necessario eseguire l'override della funzione in questo modo:
- (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];
}];
}
Se il problema persiste, è possibile controllare questo post. Essa ha anche un video di YouTube per mostrare come implementare questa segue personalizzato:
Create Push Segue Animation Without UINavigation Controller
Come si fa a nascondere l'interfaccia utente in Storyboard? E poi come si fa a premere e visualizzare a livello di programmazione ViewControllers? – Crashalot