2012-11-30 7 views
0

J'ai une image d'arrière-plan dont la largeur est de 768 pixels comme indiqué ci-dessous. Et j'ai plusieurs petites images qui doivent être placées exactement là où elles se trouvent. Par exemple, le bleu doit être positionné à 40, 120.Centrage d'une image d'arrière-plan et mise en page automatique

enter image description here

Un problème se produit lorsque l'utilisateur change l'orientation de l'appareil à paysage. L'image d'arrière-plan est positionnée au centre (Editeur> Aligner> Centre horizontal dans le conteneur). L'image de fond est donc disposée horizontalement au centre. Le système définit automatiquement la coordonnée x de l'image bleue sur 40, plutôt que sur 40 pixels à partir du bord de l'image d'arrière-plan. Donc, les petits gars sont mal placés. (Positions prévues sont en blanc.)

enter image description here

Que puis-je faire pour mettre les petits gars par rapport à la position de l'image d'arrière-plan? J'ai fait beaucoup de choses comme sélectionner l'image de fond et un petit gars respectif et choisir Editeur> Pin> Horizontal Spacing. Rien ne fonctionne. Est-il possible de conserver les emplacements relatifs indépendamment de l'orientation de l'appareil dans ce cas? Ou devrais-je juste aller sans 'Auto Layout'? Le deuxième meilleur choix est de ne pas positionner l'image de fond. Mais l'application ne sera pas belle lorsque l'utilisateur changera l'orientation en paysage.

Répondre

1

pour incorporer ces petits dans l'image d'arrière-plan (intégrer le tout dans un UIView conteneur!)

coordonnées sont toujours par rapport au récipient extérieur

+0

Nous vous remercions de vos conseils. Si je mets les petits gars dans un groupe UIScrollView, ils ne peuvent pas être positionnés au centre dans son ensemble. Si je les mets dans un groupe UIView, ce sera pire. –

+0

Je ne connais même pas un groupe scrollview: D il ressemble à la capture d'écran comme si vous vouliez déplacer tous les affichages en un seul. alors pourquoi ne pas avoir une vue de taille fixe (qui est centrée mais pas resiazble) qui contient le reste? –

0

Je l'ai en quelque sorte en les mettant dans un groupe UIScrollView puis en les déplaçant dans leur ensemble comme suit.

- (void)willAnimateRotationToInterfaceOrientation:(UIInterfaceOrientation) interfaceOrientation duration:(NSTimeInterval)duration { 
if (interfaceOrientation == UIInterfaceOrientationPortrait || interfaceOrientation == UIInterfaceOrientationPortraitUpsideDown) 
{ 
    uiscrollview1.Frame=CGRectMake(uiscrollview1.frame.origin.x, uiscrollview1.frame.origin.y, uiscrollview1.frame.size.width, uiscrollview1.frame.size.height); 
} 
else 
{ 
    uiscrollview1.Frame=CGRectMake(uiscrollview1.frame.origin.x+128, uiscrollview1.frame.origin.y, uiscrollview1.frame.size.width, uiscrollview1.frame.size.height); 
} 
} 

C'est jusqu'à présent le meilleur résultat.

Questions connexes