捕获UIView为UIImage

19

我一直在使用这种方法将 UIView 转换为 UIImage,即视图的屏幕快照 -

@interface UIView(Extended) 

- (UIImage *) imageByRenderingView;

@end


@implementation UIView(Extended)


- (UIImage *)imageByRenderingView
{   
    UIGraphicsBeginImageContext(self.bounds.size);
    [self.layer renderInContext:UIGraphicsGetCurrentContext()];
    UIImage *resultingImage = UIGraphicsGetImageFromCurrentImageContext();
    UIGraphicsEndImageContext();
    return resultingImage;
}

@end

要使用它,我这样做 -

UIImage *currImage = [self.view imageByRenderingView];

这将给出整个 UIView 的图像表示。现在我想要两张图片,一张是 UIView 的上半部分,另一张是下半部分。我该如何做?


请注意(根据我的经验),renderInContext:可能会非常昂贵。我正在cellForRowAtIndexPath:中执行它(现在没有其他选择),这显然会导致滞后。 - StuFF mc
1个回答

11

您可以使用以下代码将UIImage拆分为两部分:

CGImageRef topOfImageCG =
         CGImageCreateWithImageInRect(currImage.CGImage,
                                      CGRectMake(0,
                                                 0,
                                                 currImage.size.width,
                                                 currImage.size.height / 2.0));

UIImage *topOfImage = [UIImage imageWithCGImage:topOfImageCG];

CGImageRelease(topOfImageCG);

但是这个选择器需要 - CGImageRef CGImageCreateWithImageInRect ( CGImageRef image, CGRect rect );。如何将我拥有的 UIImage 转换为 CGImageRef - Srikar Appalaraju
Git It! 图像.CGImage,其中 image 是一个UIImage对象 :) - Srikar Appalaraju
太棒了!正是我在寻找的东西 :) - Designer023

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接