使用 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调整方面填充和裁剪