2012-04-23 1 views
0

J'ai beaucoup d'images de différentes tailles que je veux afficher à l'intérieur d'un UIScrollView. Je veux toujours que les images soient affichées à 300 pixels de large avec une hauteur variable (pour garder le rapport d'aspect). J'ai essayé beaucoup de choses, mais rien ne fonctionne. Je fais soit scier les images sur les côtés, soit les écraser.Comment faire pour que mon UIImageView s'adapte automatiquement à une largeur fixe?

Des idées?

Tout code ou exemple grandement apprécié!

Répondre

1

Il y a quelques fonctions intégrées dans iOS qui vous permettent de visualiser des données d'image (jetez un oeil à Apple's Developer Notes on CGImage. Pour ce cas, si vous avez un

UIImage *imageObj = [UIImage imageNamed:@"whatever.png"]; 

Vous pouvez trouver le hauteur et/ou largeur CGGetImageWidth/CGGetImageHeight:

size_t pixelsWide = CGImageGetWidth(imageObj.CGImage); 
size_t pixelsHigh = CGImageGetHeight(imageObj.CGImage); 
1
UIImage* image = [UIImage imageNamed: @"img.jpg"]; 

... où image est, disons 1280 * 720px

300/1280 = 0,234375

Ceci est notre facteur d'échelle que nous allons utiliser et multiplier la hauteur par, pour correspondre votre largeur cible de 300px.

0,234375 * 720 = 168.75px hauteur

Ainsi, notre 1280 * 720px image passe à 300 * 169px. (Arrondi)

+0

Je ne sais pas quelle image va être ... – dot

+0

Vous devez acquérir l'image sous une forme cependant, si la source est téléchargé et enregistré comme un fichier temporaire ou si elle va directement dans une classe telle que UIImage. – Luke

+0

ouais, ils sont tous dans le bundle ... mais il y en a des centaines et je ne veux pas de logique de codage dur pour chacun d'entre eux. – dot

Questions connexes