我上传了多个图像(2/3),我想在我的主屏幕上显示它在我的单个UIImageView宽高比为1:1时,它还在上传。因此,我用以下代码绘制这些图像:
PHCachingImageManager *imageManager = [PHCachingImageManager new];
CGSize canvasSize = CGSizeMake(100*self.uploadAssets.count, 100);
UIGraphicsBeginImageContext(canvasSize);
for (int i = 0; i < self.uploadAssets.count; i++){
if ([self.uploadAssets[i] isKindOfClass:[PHAsset class]]) {
PHAsset *asset = self.uploadAssets[i];
[imageManager requestImageForAsset:asset
targetSize:CGSizeMake(350,350)
contentMode:PHImageContentModeAspectFill
options:nil
resultHandler:^(UIImage * _Nullable result,
NSDictionary * _Nullable info) {
if (result) {
[result drawInRect:CGRectMake(i*100, 0, 100, 100)];
}
}];
}else if ([self.uploadAssets[i] isKindOfClass:[Item class]]) {
Item *item = self.uploadAssets[i];
NSURL *url = [NSURL URLWithString: item.images[0]];
NSData *imageData = [[NSData alloc] initWithContentsOfURL:url];
UIImage *image = [UIImage imageWithData:imageData];
[image drawInRect:CGRectMake(i*100, 0, 100, 100)];
}
}
UIImage *finalImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
self.uploadImage = finalImage;
问题是这3个图像变得太平(平面图像在顶部)和不成比例。我想让这些图像变成这样的比例
我已经改变了我的UIImageView到AspectFill或AspectFit或默认,但没有这些使显示的图像正确。我应该改变什么?我可以只对每张照片裁剪图像到中间吗?
不将图像分配给UIImageView
创建一个空的UIView
对象和你需要的帧大小,在你的情况下可能是width = 100
和height = 100
最后在UIImage对象到新创建的视图层像这样。
let myLayer = CALayer()
let myImage = yourFinalImage?.cgImage
myLayer.frame = myView.bounds
myLayer.contents = myImage
myLayer.contents.contentsGravity = kCAGravityResizeAspectFill //Change this property according to your need
myView.layer.addSublayer(myLayer)