6
votes

Erreur de présentation du contrôleur d'affichage centré sur iPad iOS 6

dans iOS 5 Il fonctionne correctement:

PinRequiredViewController *pinView = [[PinRequiredViewController alloc]initWithNibName:@"PinRequiredView" bundle:nil];

            UINavigationController *navController = [[UINavigationController alloc] initWithRootViewController:pinView];

            // show the navigation controller modally
            navController.modalPresentationStyle = UIModalPresentationFormSheet;
            navController.modalInPopover = NO;
            navController.modalTransitionStyle = UIModalTransitionStyleFlipHorizontal;

            [self presentViewController:navController animated:YES completion:nil];

            navController.view.superview.frame = CGRectMake(0, 0, 250, 250);

            navController.view.superview.center = self.view.window.center;


3 commentaires

J'ai le même problème et je ne peux pas le résoudre. Utilisé pour fonctionner bien avant iOS 6.


@ Javi_576 Quel est exactement le problème ici? Des questions qui disent que "ne fonctionnent pas" ne sont pas une description détaillée de la question. Dites-vous que cela ne présente pas du tout?


Non, la vue est centrée sur iOS5 avec ce code, mais non dans iOS6.


7 Réponses :


1
votes

Le problème est que vous pouvez définir le cadre du superview sur ce que vous voulez, mais l'origine ne sera pas modifiée. C'est la raison pour laquelle il ne reste pas centré.

On dirait que Apple limitait ceci exprès sur iOS6


0 commentaires

8
votes

I think it'll work if you remove the UIModalTransitionStyleFlipHorizontal transition style and use one of the other transition styles instead.

semble être un bug avec uimodaltransitionstylefliphorizontal .


1 commentaires

Merci aux hommes! C'est un bug car j'ai utilisé un autre uimodaltransitionstyle et exécuté est ok! :)



3
votes

Utilisez l'achèvement: dans votre présenceViewController: xxx

Ceci fonctionnera avec uimodaltransitionstylefliphorizontal . .


2 commentaires

C'est une étape dans la bonne direction, mais l'animation modale est la taille incorrecte jusqu'à la fin de l'animation. Le résultat final est jarring.


Sur iOS6 The NavCon.View.Superview.bounds = CGRRCTMAKE (0, 0, KPOPUPUWIDTH, KPOPUPUNTHEIGHTHEIGHT) APRÈS PRESENTVIEWCONTROLLATEUR: Animation: Achèvement: Utilisé pour travailler, mais pas sur iOS7 (bêta 5). La vue est redimensionnée, mais pas centrée ... sur les travaux d'achèvement, mais une animation moche comme l'enfer!



0
votes

Faites-le simplement dans la vue ViewDidAppear au lieu de ViewDidLoad. Et vous êtes trié!


0 commentaires

1
votes

Dans ma compréhension avec UIMODALTRANSITIONSTYLEFLIPHORIZONTYLEFLIPHORIZONTAL , le seul point d'affichage est en présentant d'abord la vue sans animation, en définissant le point central, après cela dans la ligne suivante qui le rejetera et le montrant à nouveau avec animation: oui. Comme ci-dessous ..... xxx


0 commentaires

1
votes

J'ai réussi avec les éléments suivants:

aboutViewController.modalPresentationStyle = UIModalPresentationFormSheet;
aboutViewController.modalTransitionStyle = UIModalTransitionStyleCoverVertical;

CGRect aboutSheetFrame = aboutViewController.view.frame;
[self presentViewController:aboutViewController animated:YES completion:^{
        aboutViewController.view.superview.bounds = aboutSheetFrame;
        }];
aboutViewController.view.superview.bounds = aboutSheetFrame;


0 commentaires

0
votes

pour iOS 7 Essayez ceci:

[self.navigationController presentViewController:navigationController animated:YES completion:^{
    [UIView animateWithDuration:0.3 delay:0 options:UIViewAnimationOptionCurveEaseIn animations:^{
        //Make the modal bigger than normal
        navigationController.view.superview.bounds = CGRectMake(0, 0, 700, 650);
    } completion:^(BOOL finished) {
    }];
}];


0 commentaires