2011-08-24 3 views
0

J'ai une galerie de UIImageViews (qui sont carrés) déclarés comme subviews de UIScrollView:Rotation imageView carré ScrollView

int size = self.view.frame.size.width/number; 
int maxSize = [list count]; //amount of images to show in this view 
imageViewArray = [[NSMutableArray alloc] init]; 

for (int i=0,j=1,k=0; i<maxSize; i++, j++){ 
    UIImageView *imageView = [[UIImageView alloc] initWithImage:[list objectAtIndex:i]]; 
    if (i % number == 0) 
    { 
     j = 1; 
     k++; 
    } 
imageView.frame = CGRectMake((size*(j-1)), (size*(k-1)), size, size); 
imageView.contentMode = UIViewContentModeScaleAspectFit; 
[imageView setAutoresizingMask: UIViewAutoresizingFlexibleLeftMargin | UIViewAutoresizingFlexibleRightMargin | UIViewAutoresizingFlexibleWidth]; 
[imageScrollView addSubview:imageView]; 
imageScrollView.contentSize = CGSizeMake(size*number, size*(maxSize/number)); 
[imageScrollView setAutoresizesSubviews:YES]; 

Dans tout le mode portrait est ok. Cependant dans le paysage je veux que mes images deviennent plus grandes à la fois dans l'axe X et Y. Avec le code collé mes images obtiennent une plus grande armature seulement dans la largeur, ainsi elles sont larges et courtes. Je veux qu'ils gardent leur ratio, donc toujours carré. Une idée..? BTW: J'ai essayé de régler le masque d'atténuation à la hauteur flexible, haut et bas, mais cela rend mes UIImages encore plus courtes (je ne sais pas pourquoi).

+0

la question est , d'où vous obtenez sizeX? un ce qui est en nombre? – Seega

+0

@Seega Désolé, sizeX == taille, je l'ai changé lorsque copier-coller pour empiler débordement, n'a pas remarqué celui qui reste. Corrigé dans mon post déjà. Le nombre est le nombre de colonnes dans la galerie. – Vive

Répondre

0

Vous avez écrit que les images devraient augmenter de taille en vue du paysage, alors où vous le réglage des cadres UIImageViews? (Et si elles deviennent plus petits, alors vous avez un bogue dans ce morceau de code manquant.)

Et @gamozzii est correct, vous voulez que le Autoresizing sur les imageviews être:

imageView.autoresizingMask = UIViewAutoresizingFlexibleHeight | UIViewAutoresizingFlexibleWidth; 
+0

Je ne le fais tout simplement pas .. Espéré qu'il peut être fait automatiquement;) Donc je dois faire le tableau de images et redimensionner chaque image après la rotation? – Vive

+0

Si oui, alors je veux mon scrollView.autoresizingMask = UIViewAutoresizingFlexibleHeight | UIViewAutoresizingFlexibleWidth; aussi..? Atm je l'ai réglé à toutes les dimensions flexibles (haut, bas, droite, gauche, largeur, hauteur) (pour rappeler: j'ai imageViews à l'intérieur de scrollView) – Vive

+0

Votre scrollview peut autoresize son cadre (hauteur et largeur) - mais quand le cadre change , je pense que vous devrez toujours mettre en page manuellement les vues des enfants. –

2

Vous ne voulez pas que vos marges soient flexibles, laissez-les fixes, vous voulez seulement que la hauteur/largeur interne soit flexible. Donc, essayez réglage que les deux suivantes:

[imageView setAutoresizingMask: UIViewAutoresizingFlexibleHeight | UIViewAutoresizingFlexibleWidth]; 
+0

Dans ce cas, quand je tourne au paysage, toutes les images deviennent de plus en plus petites jusqu'à ce qu'elles disparaissent complètement ... – Vive

Questions connexes