web-dev-qa-db-fra.com

Redimensionnement de l'image pour l'adapter à UIImageView

Je suis très nouveau dans Objective C et je ne fais que prendre mes marques. Je veux faire quelque chose de très simple mais cela s'avère être un défi:

J'essaie d'afficher une image dans un UIImageView. L'image que je montre est grande et je veux qu'elle soit réduite pour correspondre à la UIImageView. J'ai essayé de régler le mode d'affichage AspectFit mais l'image est affichée à la taille d'origine et est découpée par la UIImageView. Mon code est ci-dessous:

- (void)changeImages
{
    UIImage* img11 = nil;

    img11 = [UIImage imageWithContentsOfFile: [[NSBundle mainBundle] pathForResource:@"dog" ofType:@"jpeg"]];

    u11.contentMode = UIViewContentModeScaleAspectFit;
    u11.image = img11;
}

- (void)viewDidLoad
{
    [super viewDidLoad];
    // Do any additional setup after loading the view, typically from a nib.

    [self changeImages];
}

Quelqu'un peut-il nous éclairer s'il vous plaît?

Merci!

23
cristi71000

Salut je voudrais essayer ça ...

- (void)changeImages
{
    UIImage *img11 = [UIImage imageNamed@"dog.jpeg"];

    u11.contentMode = UIViewContentModeScaleAspectFit;
    u11.clipsToBounds = YES;
    [u11 setImage:img11];
}

- (void)viewWillAppear:animated
{
    [super viewWillAppear:animated];

    [self changeImages];
}

Cela redimensionnera l'image (vers le haut ou vers le bas) afin qu'elle s'adapte à l'intérieur de l'imageView. Avoir clipsToBounds n'est pas nécessaire, mais arrêtera l'affichage de l'image en dehors du cadre de votre imageView.

HTH.

31
Fogmeister

Ajoutez à votre UIViewController.m: 

-(UIImage *)resizeImage:(UIImage *)image imageSize:(CGSize)size
{
    UIGraphicsBeginImageContext(size);
    [image drawInRect:CGRectMake(0,0,size.width,size.height)];
    UIImage* newImage = UIGraphicsGetImageFromCurrentImageContext();
    // here is the scaled image which has been changed to the size specified
    UIGraphicsEndImageContext();
    return newImage;
}

En utilisant:

UIImage *image = [UIImage imageNamed:@"image.png"];
CGSize size = CGSizeMake(50, 63); // set the width and height 
UIImage *resizedImage = [self resizeImage:image imageSize:size];

J'espère que ça aide. 

16
Erhan Demirci
CGSize size=CGSizeMake(79, 84);//set the width and height
UIGraphicsBeginImageContext(size);
[image drawInRect:CGRectMake(0,0,size.width,size.height)];
UIImage * newImage = UIGraphicsGetImageFromCurrentImageContext();
//here is the scaled image which has been changed to the size specified
UIGraphicsEndImageContext();

Cela fonctionne bien et n'oubliez pas d'importer QuartzCore FrameWork ..

Bonne codage (^ _ ^) ....

4
Abhilash Reddy

Vous pouvez également définir le mode d'affichage: ajustement du format dans l'inspecteur des attributs dans Interface Builder.

1
Tad

J'ai fait ce qui suit et cela a aidé Changer le mode en "Remplissage d'aspect" à partir de la valeur par défaut "Echelle à remplir"

et ajoutez une ligne de code comme suit (je l'ai fait dans une configuration de cellule):

cell.photo.clipsToBounds = true
0
Gulz