Question

Modification de demander si Autolayout aide dans cette situation?

Comment puis-je avoir mon UILabel maintenir une position fixe sur l'écran mais encore tourner? shouldAutorotateToInterfaceOrientation revient OUI et l'étiquette tourne très bien, mais peu importe comment je régler les entretoises un des ressorts dans Xcode la position des changements d'étiquettes.

La première image montre comment j'ai créé la mise en page en story-board, avec quatre UILabels individuels. La seconde image montre comment le paysage semble - pas ce que je veux. La troisième image montre comment je voudrais paysage regarder, avec l'animation de rotation de chaque numéro centré sur le nombre lui-même.

Voici comment j'ai créé la mise en page en story-board, avec quatre UILabels individuels. Ceci est la façon dont le paysage semble - pas ce que je veux. «

Était-ce utile?

La solution

VRK de sur la bonne voie avec sa réponse, mais shouldAutorotateToInterfaceOrientation: n'est pas la bonne méthode pour y pondre vos étiquettes. Lorsque vous recevez shouldAutorotateToInterfaceOrientation:, rien n'a été mis à jour pour la nouvelle orientation encore.

Vous devriez exposer votre point de vue en willAnimateRotationToInterfaceOrientation:duration:. Comme États de la documentation:

Au moment où cette méthode est appelée, la propriété interfaceOrientation est déjà réglé sur la nouvelle orientation et ont changé les limites de la vue. Ainsi, vous pouvez effectuer une mise en page supplémentaire requise par votre point de vue dans cette méthode.

Vous pouvez même Animer votre point de vue à leurs nouvelles positions dans cette méthode.

Autres conseils

vous pouvez effectuer une rotation sur les étiquettes (transformatin). faire sur la méthode de interfaceorientation de didrotatefrom dans UIViewController.

uilabel.transform = CGAffineTransformMakeRotation (M_PI / -4); comme ça. effectuer cette orientation sur toutes les quatre. et une chose prendre l'orientation de la barre d'état appdelegate autre que l'orientation de l'appareil. il vous aider à rester en phase avec l'orientation de la vue.

vous devez définir les valeurs de position du cadre de l'étiquette manuellement dans la méthode shouldAutorotateToInterfaceOrientation

Créer deux UILabels, une autre horizontalement et verticalement. Cacher et montrer l'étiquette requise lorsque vous changez d'orientation. Pour ce faire, vous devez mettre en viewDidLoad:

[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(didRotate:) name:@"UIDeviceOrientationDidChangeNotification" object:nil];

et mettre en œuvre

- (void) didRotate:(NSNotification *)notification{

       UIDeviceOrientation orientation = [[UIDevice currentDevice] orientation];

       if (orientation == UIDeviceOrientationLandscapeLeft)
       {

          // show Horizontal Label
       }
       ....
}
scroll top