简体   繁体   English

缩放UIImage以正确适合UIImageView

[英]Scale UIImage to fit UIImageView correctly

I have following code that takes an image form photo gallery using UIImagePickerController 我有以下代码使用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 我选择了以下图片

在此处输入图片说明

that is shown over above cropImageView like this 这样显示在cropImageView上方

在此处输入图片说明

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;

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM