获取并保存 UICollectionViewCell 的屏幕截图

Take and save screenshot of UICollectionViewCell

如何截取我 UICollectionView 中所有单元格的屏幕截图并将它们保存到磁盘(每个单元格在其自己的文件中)? UICollectionViewCells 非常复杂,我想在我的 Watch App 中展示它们。

我强烈建议不要为您的 Apple Watch 执行此操作 UI。如果你确实想这样做,你可以在每个 UICollectionViewCell 上调用 - (BOOL)drawViewHierarchyInRect:(CGRect)rect afterScreenUpdates:(BOOL)afterUpdates。代码看起来像(这是未经测试的代码,因此可能有一些拼写错误,但您应该了解要做什么)。

for (int section = 0; section < collectionView.numberOfSections; section++)
{
    for (int row = 0; row < [collectionView numberOfItemsInSection:section]; row++)
    {
        NSIndexPath* path = [NSIndexPath indexPathForRow:row inSection:section];
        UICollectionViewCell* cell = [collectionView cellForItemAtIndexPath:path];
        //You may need to change the size here
        UIGraphicsBeginImageContext(cell.bounds.size);
        CGContextRef ctx = UIGraphicsGetCurrentContext();
        [cell drawViewHierarchyInRect:cell.bounds afterScreenUpdates:YES];
        UIImage* img = UIGraphicsGetImageFromCurrentImageContext();
        UIGraphicsEndImageContext();

        //img has the image for the cell
    }
}