ios - 使用 UIGraphicsBeginImageContext 将 UICollectionViewCell 保存为图像

标签 ios uicollectionviewcell

我正在使用 UIGraphicsBeginImageContext 捕获屏幕,但图像质量不佳。任何人都可以帮助我如何将 UICollectionViewCell 保存为高质量图像以及如何在选择单元格时获取动态单元格的大小。

最佳答案

CollectionView 委托(delegate)方法将在单元格被选中时获取单元格,单元格图像将保存到项目文档目录中。

-(void)collectionView:(UICollectionView *)collectionView didSelectItemAtIndexPath:(NSIndexPath *)indexPath
{
    UICollectionViewCell *cell = [collectionView cellForItemAtIndexPath:indexPath];

    UIGraphicsBeginImageContext(cell.bounds.size);

    [cell.layer renderInContext:UIGraphicsGetCurrentContext()];

    UIImage *newImage = UIGraphicsGetImageFromCurrentImageContext();
    UIGraphicsEndImageContext();

    NSString *stringPath = [[NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES)objectAtIndex:0]stringByAppendingPathComponent:@"New ImageFolder"];

    NSError *error = nil;
    if (![[NSFileManager defaultManager] fileExistsAtPath:stringPath])
        [[NSFileManager defaultManager] createDirectoryAtPath:stringPath withIntermediateDirectories:NO attributes:nil error:&error];

    NSString *fileName = [stringPath stringByAppendingFormat:@"/image.jpg"];
    NSData *data = UIImageJPEGRepresentation(newImage, 1.0);
    [data writeToFile:fileName atomically:YES];

}

关于ios - 使用 UIGraphicsBeginImageContext 将 UICollectionViewCell 保存为图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27684948/

相关文章:

iphone - 如何访问附加到 UIGestureRecognizer 的选择器的名称?

objective-c - 我的 "viewDidLoad"在循环中

ios - Swift - CollectionViewCell 标签在我重新加载后移动位置

ios - 在分页模式下制作中心单元格

ios - 无法在 UICollectionView 单元格和单元格 subview 之间添加约束

ios - 解析 saveEventually 保存空对象

iphone - 为什么 UIResponder inputAccessoryView 是原子的?

iphone - 如何在 iOS 上使用 ExtAudioFile 使 AAC 编码正常工作?

ios - UICollectionViewCell 奇怪的行为。单元格未正确更新图层

ios - 以编程方式在 UICollectionViewController 的单元格内设置 UIView subview 的高度?