Aller au contenu


Photo

Frame d'une UIView après une rotation du device


  • Please log in to reply
8 réponses à ce sujet

#1 Alf1996

Alf1996

    Broyeur de fèves

  • Artisan chocolatier
  • PipPipPipPipPipPip
  • 1 631 messages
  • Location13

Posté 15 août 2017 - 17:00

Hello à tous !

Voila un bon moment que je ne suis pas passée faire un petit coucou !!!  ::) 

 

Je souhaiterais récupérer le frame d’une UIView (et de certaines subViews), juste après la rotation, et je rencontre des petits problèmes…

 

J’ai essayé de faire un truc via un abonnement à la notification «UIDeviceOrientationDidChangeNotification  », mais malheureusement le frame que je récupère n’est pas à jour lorsque je reçois la notification : il semble qu’il y ait un retard, un peu comme si la notification était appelée au moment du « willRotate » et pas du « didRotate ». Par contre, l’information concernant l’orientation du device est bonne…    :crazy:  :crazy:  :crazy: 

 

 

Voici mon code :

dans le viewDidAppear :

    // Abonnement à la notification "changement d'orientation"
    [[NSNotificationCenter defaultCenter] addObserver:self
                                             selector:@selector(orientationChanged:)
                                                 name:UIDeviceOrientationDidChangeNotification
                                               object:nil];

la méthode « orientationChanged » :

- (void)orientationChanged:(NSNotification *)notification{
    NSLog(@"Orientation changed");
    UIDeviceOrientation Orientation=[[UIDevice currentDevice]orientation];
    
    if(Orientation==UIDeviceOrientationLandscapeLeft || Orientation==UIDeviceOrientationLandscapeRight) {
        NSLog(@"Landscape");
    } else if(Orientation==UIDeviceOrientationPortrait) {
        NSLog(@"Potrait Mode");
    }
 
    NSLog(@"frame : %f   %f",self.view.frame.size.width,self.view.frame.size.height);
    NSLog(@"bounds : %f   %f",self.view.bounds.size.width,self.view.bounds.size.height);
}

Et la console :

2017-08-15 17:46:22.620 MyApplication[35923:679059] Orientation changed
2017-08-15 17:46:22.620 MyApplication[35923:679059] Landscape
2017-08-15 17:46:22.621 MyApplication[35923:679059] frame : 768.000000   1024.000000
2017-08-15 17:46:22.621 MyApplication[35923:679059] bounds : 768.000000   1024.000000
 
2017-08-15 17:46:41.884 MyApplication[35923:679059] Orientation changed
2017-08-15 17:46:41.884 MyApplication[35923:679059] Potrait Mode
2017-08-15 17:46:41.885 MyApplication[35923:679059] frame : 1024.000000   768.000000
2017-08-15 17:46:41.885 MyApplication[35923:679059] bounds : 1024.000000   768.000000
 
2017-08-15 17:46:53.421 MyApplication[35923:679059] Orientation changed
2017-08-15 17:46:53.421 MyApplication[35923:679059] Landscape
2017-08-15 17:46:53.422 MyApplication[35923:679059] frame : 768.000000   1024.000000
2017-08-15 17:46:53.422 MyApplication[35923:679059] bounds : 768.000000   1024.000000

Vu que l’information sur l’orientation du device est bonne, je pourrais bidouiller un truc… mais ce serait vraiment crade !!!

Quelqu’un a une idée ?   :prie!: 

Merci d’avance…



#2 Draken

Draken

    Mouleur de chocolats

  • Artisan chocolatier
  • PipPipPipPipPipPipPipPip
  • 8 599 messages
  • LocationParis

Posté 15 août 2017 - 17:14

Salut Alf, ça plane pour toi ?


Garçon, servez-moi un Covfefe avec du lait de soja, sans OGM ..

Et faites régler la climatisation, il fait bien chaud, ici !

 

 

Éternel Novice !  :baby:

Tueur de poneys !  :(

 

Faire simple .. c'est compliqué !

Faire compliqué .. c'est simple !

 

Un MOOC (cours en ligne - dont je ne suis pas l'auteur) gratuit sur la programmation en Obj-C et en Swift 3, démarrant le 14 Mars 2017 :

https://www.edx.org/...onnex-progios1x

 

Des dizaines d'heures de tutoriels vidéo en français (je ne suis pas l'auteur) pour apprendre à développer en Obj-C et Swift : http://pagesperso-sy...don/5I452-2014/

 

 


#3 Joanna Carter

Joanna Carter

    Broyeur de fèves

  • Contrôleur d'arômes
  • 1 887 messages
  • LocationPlestin-les-Grèves (22)

Posté 15 août 2017 - 18:50

Faut oublier tout ça.

@implementation ViewController
{
  - (void)viewWillTransitionToSize:(CGSize)size withTransitionCoordinator:(id<UIViewControllerTransitionCoordinator>)coordinator
  {
    NSLog(@"width %f : height %f", size.width, size.height) // landscape - 1024 : 768 ; portrait - 768 : 1024 
  }
}


#4 Alf1996

Alf1996

    Broyeur de fèves

  • Artisan chocolatier
  • PipPipPipPipPipPip
  • 1 631 messages
  • Location13

Posté 15 août 2017 - 21:51

Salut Alf, ça plane pour toi ?

 

Hello Draken ! Ça plane !!!!

 

 

Faut oublier tout ça.

@implementation ViewController
{
  - (void)viewWillTransitionToSize:(CGSize)size withTransitionCoordinator:(id<UIViewControllerTransitionCoordinator>)coordinator
  {
    NSLog(@"width %f : height %f", size.width, size.height) // landscape - 1024 : 768 ; portrait - 768 : 1024 
  }
}

 

Merci Joanna, j'avais vu cette méthode, mais je ne savais pas trop comment l'utiliser ! Je vais regarder de plus près.

En fait, je récupère le size de la View, c'est çà ? Et du coup, si je veux les subViews comment çà se passe ?



#5 Draken

Draken

    Mouleur de chocolats

  • Artisan chocolatier
  • PipPipPipPipPipPipPipPip
  • 8 599 messages
  • LocationParis

Posté 15 août 2017 - 22:35

 

En fait, je récupère le size de la View, c'est çà ? Et du coup, si je veux les subViews comment çà se passe ?

Chaque vue conserve ses sous-vues dans un tableau appelé subviews. Il suffit de piocher dedans pour accéder à toutes les infos sur les vues filles.

 

https://developer.ap...622614-subviews


Garçon, servez-moi un Covfefe avec du lait de soja, sans OGM ..

Et faites régler la climatisation, il fait bien chaud, ici !

 

 

Éternel Novice !  :baby:

Tueur de poneys !  :(

 

Faire simple .. c'est compliqué !

Faire compliqué .. c'est simple !

 

Un MOOC (cours en ligne - dont je ne suis pas l'auteur) gratuit sur la programmation en Obj-C et en Swift 3, démarrant le 14 Mars 2017 :

https://www.edx.org/...onnex-progios1x

 

Des dizaines d'heures de tutoriels vidéo en français (je ne suis pas l'auteur) pour apprendre à développer en Obj-C et Swift : http://pagesperso-sy...don/5I452-2014/

 

 


#6 Jérémy

Jérémy

    Ecabosseur en fèves

  • Membre
  • PipPipPipPip
  • 342 messages
  • LocationBordeaux

Posté 16 août 2017 - 13:27

Dans le même esprit, au niveau de ta view, tu peux faire ça (c'est en swift) :
 

override var bounds : CGRect {
    if bounds != oldValue {
        print(bounds) // S'affiche lorsque la view connait une modification
    }
}

Twitter : @jrmguimberteau


#7 Alf1996

Alf1996

    Broyeur de fèves

  • Artisan chocolatier
  • PipPipPipPipPipPip
  • 1 631 messages
  • Location13

Posté 16 août 2017 - 15:06

Swift ? kesako ??? 

 

Désolée je ne me suis pas encore convertie... Merci quand même Jérémy.



#8 Draken

Draken

    Mouleur de chocolats

  • Artisan chocolatier
  • PipPipPipPipPipPipPipPip
  • 8 599 messages
  • LocationParis

Posté 16 août 2017 - 15:08

 

Désolée je ne me suis pas encore convertie...  :whip:  :whip:  :whip:  :whip:  :whip:


Garçon, servez-moi un Covfefe avec du lait de soja, sans OGM ..

Et faites régler la climatisation, il fait bien chaud, ici !

 

 

Éternel Novice !  :baby:

Tueur de poneys !  :(

 

Faire simple .. c'est compliqué !

Faire compliqué .. c'est simple !

 

Un MOOC (cours en ligne - dont je ne suis pas l'auteur) gratuit sur la programmation en Obj-C et en Swift 3, démarrant le 14 Mars 2017 :

https://www.edx.org/...onnex-progios1x

 

Des dizaines d'heures de tutoriels vidéo en français (je ne suis pas l'auteur) pour apprendre à développer en Obj-C et Swift : http://pagesperso-sy...don/5I452-2014/

 

 


#9 Jérémy

Jérémy

    Ecabosseur en fèves

  • Membre
  • PipPipPipPip
  • 342 messages
  • LocationBordeaux

Posté 16 août 2017 - 15:12

Désolée je ne me suis pas encore convertie... Merci quand même Jérémy.

 

Tu dois avoir un équivalent en Objective-c, non ?  ^_^


Twitter : @jrmguimberteau





0 utilisateur(s) li(sen)t ce sujet

0 membre(s), 0 invité(s), 0 utilisateur(s) anonyme(s)