Je sais qu'il y a une question samilaire Uniquement en mode paysage ONE VIEW , et je l'ai lu attentivement avant de poser celui-ci.

J'ai une WKWebview nommée en tant que vue Web dans mon application et la vue Web a une sous-vue nommée en tant que lecteur. J'ai utilisé la vue Web pour charger la page Web et le lecteur pour lire une vidéo.

Par défaut, le lecteur est compressé en bas à droite de la vue Web et je souhaite développer le lecteur en mode paysage lorsque je clique sur le bouton de développement du lecteur.

Comme la webview et le player sont définis dans WebViewController.swift, c'est-à-dire dans le même contrôleur. Comment puis-je simplement transformer la sous-vue du lecteur en paysage?

5
Kris Roofe 20 avril 2017 à 06:02

3 réponses

Meilleure réponse

Vous pouvez essayer avec plusieurs UIWindow. Chaque UIWindow peut avoir son propre contrôleur de vue racine. Il est donc possible d'avoir une fenêtre qui tourne et une autre qui ne tourne pas. J'ai moi-même utilisé une telle approche et cela a très bien fonctionné pour moi. Il peut être très difficile de rendre votre "sous-vue" indépendante UIWindow mais je pense que cela vaut la peine d'essayer. J'espère que cette information vous aidera.

6
iWheelBuy 29 avril 2017 à 10:47

De mon point de vue, on ne peut pas fixer une seule orientation pour la sous-vue dans l'application. Le contrôleur de vue ne peut avoir qu'une seule orientation (paysage / portrait)

Vous pouvez mettre un contrôleur vidéo factice en bas à droite de l'écran et au-dessus de cela, vous pouvez mettre le bouton ou autre chose (objet tappable). Lorsque vous cliquez sur le bouton ou sur l'objet tapable, vous pouvez présenter un nouveau contrôleur de vue dans lequel vous pouvez lire la vidéo en mode paysage uniquement.

Une fois la lecture de la vidéo terminée, vous pouvez fermer le contrôleur de vue.

3
Jayeshkumar Sojitra 29 avril 2017 à 06:58

Vous pouvez vérifier la classe lorsque votre candidature a reçu un appel de changement d'orientation comme ci-dessous.

#pragma mark - Orientations Methods
- (NSUInteger)application:(UIApplication *)application supportedInterfaceOrientationsForWindow:(UIWindow *)window
{
    if ([[self.window.rootViewController presentedViewController] isKindOfClass:[MPMoviePlayerViewController class]])
    {
        return UIInterfaceOrientationMaskAllButUpsideDown;
    }
    else
    {
        if ([[self.window.rootViewController presentedViewController] isKindOfClass:[UINavigationController class]])
        {
            // look for it inside UINavigationController
            UINavigationController *nc = (UINavigationController *)[self.window.rootViewController presentedViewController];

            // is at the top?
            if ([nc.topViewController isKindOfClass:[MPMoviePlayerViewController class]])
            {
                return UIInterfaceOrientationMaskAllButUpsideDown;

                // or it's presented from the top?
            }
            else if ([[nc.topViewController presentedViewController] isKindOfClass:[MPMoviePlayerViewController class]])
            {
                return UIInterfaceOrientationMaskAllButUpsideDown;
            }
        }
    }

    return UIInterfaceOrientationMaskPortrait;         
}

Cette méthode vérifiera que si votre classe est Movie player, elle permettra de faire pivoter votre vue. Vous devez gérer lorsque l'utilisateur appuie sur le bouton Terminé dans le lecteur de film

2
vivek bhoraniya 5 mai 2017 à 05:25