获取并保存 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
}
}
如何截取我 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
}
}