使用 UIImageView 调整 UIImage

Posted

技术标签:

【中文标题】使用 UIImageView 调整 UIImage【英文标题】:Using a UIImageView to adjust a UIImage 【发布时间】:2014-07-16 05:16:23 【问题描述】:

我有一个 UIImage,我想根据 UIImageView 调整设备上显示的内容。

UIImage 是:

UIImage *image = // a PNG I have

// width = 1200
CGFloat width = image.size.width;

// height = 900
CGFloat height = image.size.height;

我有一个 UIImageView

UIImageView *iview = [[UIImageView alloc] initWithFrame:CGRectMake(0.0, 0.0, 675.0, 900.0)];

如何在不调整纵横比的情况下将我的 UIImage 放入 UIImageView?我希望 UIImage 的边缘被裁剪掉?

【问题讨论】:

你得到答案了吗? 【参考方案1】:

希望对你有帮助

-(UIImage*)crop:(CGRect)frame

    // Find the scalefactors  UIImageView's widht and height / UIImage width and height
    CGFloat widthScale = self.bounds.size.width / self.image.size.width;
    CGFloat heightScale = self.bounds.size.height / self.image.size.height;

    // Calculate the right crop rectangle 
    frame.origin.x = frame.origin.x * (1 / widthScale);
    frame.origin.y = frame.origin.y * (1 / heightScale);
    frame.size.width = frame.size.width * (1 / widthScale);
    frame.size.height = frame.size.height * (1 / heightScale);

    // Create a new UIImage
    CGImageRef imageRef = CGImageCreateWithImageInRect(self.image.CGImage, frame);
    UIImage *croppedImage = [UIImage imageWithCGImage:imageRef];
    CGImageRelease(imageRef);

    return croppedImage;//(return value is uiimage)

然后添加到uiimageview

【讨论】:

界限是什么? uiimageview 框架和 uiview 边界 所以 uiimageview 比 uiview 大,反之亦然? 努力+1,但我无法让它在相机上正常工作【参考方案2】:

如果你想裁剪边缘并将你的图像的位置居中,那么 将 Imageview 属性设置为 AspectFill

myImageView.contentMode = UIViewContentModeScaleAspectFill; 
myImageView.clipsToBounds = YES;

希望对你有帮助

【讨论】:

【参考方案3】:

尝试将 UIImageView 的 contentMode 属性设置为 UIViewContentModeScaleAspectFill,根据文档是:

The option to scale the content to fill the size of the view. Some portion of the 
content may be clipped to fill the view’s bounds.

您可以在UIView documentation 中查看其他选项。

【讨论】:

以上是关于使用 UIImageView 调整 UIImage的主要内容,如果未能解决你的问题,请参考以下文章

swift UIImage使用UIImageView调整方面填充和裁剪

将 UIImage 调整为 UIImageView

UIImage 不应在 UIImageView 内拉伸

防止 UITableViewCell 的 UIImageView 调整异步加载的 UIImage 的大小

是否可以在不损失质量的情况下调整 UIImage 的大小?

UIImage 意外调整大小