webentwicklung-frage-antwort-db.com.de

Bildgröße an UIImageView anpassen

Ich bin in Objective C sehr neu und ich orientiere mich nur. Ich möchte etwas wirklich einfaches machen, aber es stellt sich als Herausforderung heraus:

Ich versuche, ein Bild in einer UIImageView anzuzeigen. Das Bild, das ich zeige, ist groß und ich möchte, dass es auf die UIImageView verkleinert wird. Ich habe versucht, den AspectFit View-Modus einzustellen, aber das Bild wird in der Originalgröße angezeigt und von der UIImageView abgeschnitten. Mein Code ist unten:

- (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];
}

Kann jemand bitte etwas Licht in dieses Licht werfen?

Vielen Dank!

23
cristi71000

Hi, ich würde es versuchen ...

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

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

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

    [self changeImages];
}

Dadurch wird das Bild so skaliert (nach oben oder unten), dass es in imageView passt. Es ist nicht notwendig, clipsToBounds zu haben, aber das Bild wird außerhalb des Rahmens von imageView angezeigt.

HTH.

31
Fogmeister

Fügen Sie Ihrem UIViewController.m hinzu: 

-(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;
}

Mit:

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

Ich hoffe, es hilft. 

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();

Dies funktioniert sicher und vergessen Sie nicht, QuartzCore FrameWork zu importieren.

Haben Sie eine glückliche Codierung (^ _ ^) ....

4
Abhilash Reddy

Sie können Ansicht: Modus auch im Ansichtsfenster „Attribute“ im Interface Builder auf Seitenverhältnis einstellen

1
Tad

Ich habe folgendes getan und es hat geholfen Den Modus vom Standardwert "Scale to fill" in "Aspect fill" ändern

und fügen Sie eine Codezeile wie folgt hinzu (ich habe es in einer Zellkonfiguration getan):

cell.photo.clipsToBounds = true
0
Gulz