riksof-zeeshan
riksof-zeeshan

Reputation: 531

Scale UIImage to fit UIImageView correctly

I have following code that takes an image form photo gallery using UIImagePickerController

- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info
{
    UIImage *pickerImg = info[UIImagePickerControllerEditedImage];
    if (pickerImg == nil) {
        pickerImg = info[UIImagePickerControllerOriginalImage];
    }

    NSData *imageData = UIImagePNGRepresentation(pickerImg);
    UIImage *img = [UIImage imageWithData:imageData];

    UIImage *fixedOrientationImage = [UIImage imageWithCGImage:img.CGImage scale:pickerImg.scale orientation:pickerImg.imageOrientation];
    pickerImg = fixedOrientationImage;

    cropView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, self.view.bounds.size.width,  self.view.bounds.size.height)];
    cropView.backgroundColor = [UIColor darkTextColor];

    [self.navigationController setNavigationBarHidden:YES animated:YES];

    UIImageView * cropImageView = [[UIImageView alloc] initWithFrame:CGRectMake(0, 0, self.view.bounds.size.width,  self.view.bounds.size.height - 60)];
    cropImageView.image = pickerImg;
    cropImageView.contentMode = UIViewContentModeScaleAspectFit;
    cropImageView.clipsToBounds = YES;

    [cropView addSubview:cropImageView];
    [self.view addSubview:cropView];
}

I have selected the following image

enter image description here

that is shown over above cropImageView like this

enter image description here

Upvotes: 0

Views: 485

Answers (1)

Frankie
Frankie

Reputation: 11928

Try setting either the image or the frame after setting the content mode

UIImageView * cropImageView = [[UIImageView alloc] init];
cropImageView.contentMode = UIViewContentModeScaleAspectFit;
cropImageView.frame = CGRectMake(0, 0, self.view.bounds.size.width,  self.view.bounds.size.height - 60);
cropImageView.image = pickerImg;
cropImageView.clipsToBounds = YES;

Upvotes: 2

Related Questions