[xcode]fixer l'orientation de l'app dans les setting

Bonjour à  tous



J'ai un petit soucis qui semble bête, mais j'ai pas trouvé comment m'en dépêtrer.



Dans les setting du projet, j'ai fixé les orientations de l'application


<br />
<br />
[color=#c800a7]&lt;key&gt;[/color]UISupportedInterfaceOrientations~ipad[color=#c800a7]&lt;/key&gt;[/color][color=#c800a7]<br />
&lt;array&gt;[/color]<br />
[color=#c800a7]&lt;string&gt;[/color]UIInterfaceOrientationLandscapeLeft[color=#c800a7]&lt;/string&gt;[/color]<br />
[color=#c800a7]&lt;string&gt;[/color]UIInterfaceOrientationLandscapeRight[color=#c800a7]&lt;/string&gt;[/color][color=#c800a7]<br />
&lt;/array&gt;[/color]<br />
<br />




Et s'il démarre bien en landscape, il fait une rotation si je bouge l'ipad...

J'utilise des ViewController commun à  plusieurs projet, et je prefere ne pas modifier le code.



Y a t'il un moyen dans les setting de fixer une bonne fois pour toutes l'orientation de toutes les fenêtre de l'application ?



Merci



D.H.

Réponses

  • A ma connaissance il n'y a pas de solutions autre que par le code en surchargeant le shouldAutorotateToInterfaceOrientation sur chaque UIViewController.



    Ce que tu peux faire sinon, c'est de créer une sous classe de UIViewController dans laquelle tu surcharge juste cette fameuse méthode. Ensuite tu fais hériter tous tes controller, non plus de UIViewController, mais de cette nouvelle sous classe.
  • J'ai créer une CheckOrientationViewController que toute les ViewController peuvent étendre, avec juste cette méthode.

    Ca marche sans problème


    <br />
    <br />
    - ([color=#c800a7]BOOL[/color])shouldAutorotateToInterfaceOrientation:([color=#7b1caf]UIInterfaceOrientation[/color])interfaceOrientation {<br />
    <br />
        [color=#7b1caf]NSBundle[/color]* mainBundle = [[color=#7b1caf]NSBundle[/color] [color=#470086]mainBundle[/color]];<br />
        [color=#7b1caf]NSArray[/color]* autorizedOrientation = [mainBundle [color=#470086]objectForInfoDictionaryKey[/color]:[color=#dd0005]@&quot;UISupportedInterfaceOrientations&quot;[/color]];<br />
    <br />
        [color=#c800a7]BOOL[/color] shoulAutorotate = [color=#c800a7]NO[/color];<br />
    <br />
        [color=#c800a7]switch[/color] (interfaceOrientation) {[color=#470086]<br />
    [color=#000000]        [/color][color=#c800a7]case[/color][color=#000000] [/color]UIInterfaceOrientationLandscapeLeft[color=#000000]:[/color][/color]<br />
                shoulAutorotate = [autorizedOrientation [color=#470086]containsObject[/color]:[color=#dd0005]@&quot;UIInterfaceOrientationLandscapeLeft&quot;[/color]];<br />
                [color=#c800a7]break[/color];[color=#470086]<br />
    [color=#000000]        [/color][color=#c800a7]case[/color][color=#000000] [/color]UIInterfaceOrientationLandscapeRight[color=#000000]:[/color][/color]<br />
                shoulAutorotate = [autorizedOrientation [color=#470086]containsObject[/color]:[color=#dd0005]@&quot;UIInterfaceOrientationLandscapeRight&quot;[/color]];<br />
                [color=#c800a7]break[/color];[color=#470086]<br />
    [color=#000000]        [/color][color=#c800a7]case[/color][color=#000000] [/color]UIInterfaceOrientationPortrait[color=#000000]:[/color][/color]<br />
                shoulAutorotate = [autorizedOrientation [color=#470086]containsObject[/color]:[color=#dd0005]@&quot;UIInterfaceOrientationPortrait&quot;[/color]];<br />
                [color=#c800a7]break[/color];[color=#470086]<br />
    [color=#000000]        [/color][color=#c800a7]case[/color][color=#000000] [/color]UIInterfaceOrientationPortraitUpsideDown[color=#000000]:[/color][/color]<br />
                shoulAutorotate = [autorizedOrientation [color=#470086]containsObject[/color]:[color=#dd0005]@&quot;UIInterfaceOrientationPortraitUpsideDown&quot;[/color]];<br />
                [color=#c800a7]break[/color];<br />
    <br />
            [color=#c800a7]default[/color]:<br />
                [color=#c800a7]break[/color];<br />
        }<br />
        [color=#c800a7]return[/color] shoulAutorotate;<br />
    }<br />
    
  • 'dream a écrit:


    J'ai créer une CheckOrientationViewController que toute les ViewController peuvent étendre, avec juste cette méthode.

    Ca marche sans problème


    <br />
    <br />
    - ([color=#c800a7]BOOL[/color])shouldAutorotateToInterfaceOrientation:([color=#7b1caf]UIInterfaceOrientation[/color])interfaceOrientation {<br />
    <br />
    	[color=#7b1caf]NSBundle[/color]* mainBundle = [[color=#7b1caf]NSBundle[/color] [color=#470086]mainBundle[/color]];<br />
    	[color=#7b1caf]NSArray[/color]* autorizedOrientation = [mainBundle [color=#470086]objectForInfoDictionaryKey[/color]:[color=#dd0005]@&quot;UISupportedInterfaceOrientations&quot;[/color]];<br />
    <br />
    	[color=#c800a7]BOOL[/color] shoulAutorotate = [color=#c800a7]NO[/color];<br />
    <br />
    	[color=#c800a7]switch[/color] (interfaceOrientation) {<br />
    [color=#470086][color=#000000]		[/color][color=#c800a7]case[/color][color=#000000] [/color]UIInterfaceOrientationLandscapeLeft[color=#000000]:[/color][/color]<br />
    			shoulAutorotate = [autorizedOrientation [color=#470086]containsObject[/color]:[color=#dd0005]@&quot;UIInterfaceOrientationLandscapeLeft&quot;[/color]];<br />
    			[color=#c800a7]break[/color];<br />
    [color=#470086][color=#000000]		[/color][color=#c800a7]case[/color][color=#000000] [/color]UIInterfaceOrientationLandscapeRight[color=#000000]:[/color][/color]<br />
    			shoulAutorotate = [autorizedOrientation [color=#470086]containsObject[/color]:[color=#dd0005]@&quot;UIInterfaceOrientationLandscapeRight&quot;[/color]];<br />
    			[color=#c800a7]break[/color];<br />
    [color=#470086][color=#000000]		[/color][color=#c800a7]case[/color][color=#000000] [/color]UIInterfaceOrientationPortrait[color=#000000]:[/color][/color]<br />
    			shoulAutorotate = [autorizedOrientation [color=#470086]containsObject[/color]:[color=#dd0005]@&quot;UIInterfaceOrientationPortrait&quot;[/color]];<br />
    			[color=#c800a7]break[/color];<br />
    [color=#470086][color=#000000]		[/color][color=#c800a7]case[/color][color=#000000] [/color]UIInterfaceOrientationPortraitUpsideDown[color=#000000]:[/color][/color]<br />
    			shoulAutorotate = [autorizedOrientation [color=#470086]containsObject[/color]:[color=#dd0005]@&quot;UIInterfaceOrientationPortraitUpsideDown&quot;[/color]];<br />
    			[color=#c800a7]break[/color];<br />
    <br />
    		[color=#c800a7]default[/color]:<br />
    			[color=#c800a7]break[/color];<br />
    	}<br />
    	[color=#c800a7]return[/color] shoulAutorotate;<br />
    }<br />
    





    Je trouve ça habile, mais ça consomme malheureusement beaucoup de perfs (méthode appelée à  chaque rotation) pour pas grand choses (seulement quelques lignes de code à  écrire).
  • GranDavGranDav Membre
    juin 2012 modifié #5
    Bon c'est encore sous NDA, mais Apple à  semble-t'il proposé un nouveau système pour ses ViewControllers qui vont désormais lire automatiquement le contenu du plist sous iOS 6 image/smile.png' class='bbc_emoticon' alt=':)' />
  • 'GranDav' a écrit:


    Bon c'est encore sous NDA, mais Apple à  semble-t'il proposé un nouveau système pour ses ViewControllers qui vont désormais lire automatiquement le contenu du plist sous iOS 6 image/smile.png' class='bbc_emoticon' alt=':)' />




    Hum... GranDav, c'est sous NDA effectivement !!!
  • 'Moonlight a écrit:


    Hum... GranDav, c'est sous NDA effectivement !!!




    On est entre nous image/wink.png' class='bbc_emoticon' alt=';)' />
  • Entre nous ET ce sale cafteur de Google !
  • BooleanneBooleanne Membre
    août 2012 modifié #9
    'GranDav' a écrit:


    Bon c'est encore sous NDA, mais Apple à  semble-t'il proposé un nouveau système pour ses ViewControllers qui vont désormais lire automatiquement le contenu du plist sous iOS 6 image/smile.png' class='bbc_emoticon' alt=':)' />




    Bonjour,



    merci de me donner quelques éclairages,



    avec le passage à  IOS 6, les rotations effectivement semblent ne plus se gérer pareil, il affecte automatiquement les orientations globales des prefs de l'appli à  tous les viewcontrollers, quelque soit ce que l'on a mis dans le shouldAutorate.



    Je pense que le problème diffère de celui de Dream Hope.



    Là , je veux limiter les orientations pour certains viewcontroller, et ça ne marche plus.



    Une idée ?

    Merci d'avance.



    EDIT : bizarre, sur le simulateur, ça marche, mais pas sur l'Ipad, qui pivote ma vue malgré tout...
Connectez-vous ou Inscrivez-vous pour répondre.