Rotation UILabel avec position fixe

Modification pour requestr si Autolayout aide dans cette situation?

Comment puis-je faire en sorte que mon UILabel conserve une position fixe à l'écran tout en continuant de tourner? shouldAutorotateToInterfaceOrientation returnne YES et l'label tourne bien, mais peu importe comment je mets les ressorts dans Xcode, la position de l'label change.

La première image montre comment j'ai créé la layout dans le storyboard, avec quatre UILabels individuels. La deuxième image montre comment le paysage apparaît – pas ce que je veux. La troisième image montre comment je voudrais que le paysage ressemble, avec l'animation de rotation de chaque nombre centré sur le nombre lui-même.

C'est ainsi que j'ai créé la mise en page dans le storyboard, avec quatre UILabels individuels.C'est ainsi que le paysage apparaît - pas ce que je veux.Voici ce que je voudrais que le paysage ressemble, avec l'animation de rotation de chaque nombre centré sur le nombre lui-même.

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

Vous devez disposer vos vues dans willAnimateRotationToInterfaceOrientation:duration: Comme la documentation l' indique:

Au moment où cette méthode est appelée, la propriété interfaceOrientation est déjà définie sur la nouvelle orientation et les limites de la vue ont été modifiées. Ainsi, vous pouvez effectuer toute disposition supplémentaire requirejse par vos vues dans cette méthode.

Vous pouvez même animer vos vues à leurs nouveaux posts dans cette méthode.

vous pourriez effectuer une rotation sur les labels (transformatin). faire cela sur didrotatefrom interfaceorientation méthode dans uiviewcontroller.

uilabel.transform = CGAffineTransformMakeRotation (M_PI / -4); comme ça. effectuer cela sur les quatre orientations. et une chose prend l'orientation de la barre d'état d'appdelegate autre que l'orientation du périphérique. Cela vous aidera à restr synchronisé avec l'orientation de la vue.

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

Créez deux UILabels, un horizontalement et l'autre verticalement. Cacher et afficher l'label requirejse lorsque vous changez d'orientation. Pour ce faire, vous devez mettre 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 } .... }