将2/3的图像合并为1个图像,并按每个图像划分使用drawrect iOS目标C



我上传了多个图像(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 = 100height = 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)

最新更新