快速拍摄快照的方法

时间:2016-01-04 14:04:09

标签: ios objective-c uicollectionview uigraphicscontext uiimagejpegrepresentation

我有UICollectionView。我想为每个对象生成两个快照。

示例代码:

        for (int index = 0; index < 2; index++) {

            UIView *dummyView = [[UIView alloc] init];
            dummyView.frame = some frame....,
            dummyView.backgroundColor = [UIColor yellowColor];
            UIGraphicsBeginImageContextWithOptions(dummyView.bounds.size, NO, [UIScreen mainScreen].scale);
            [dummyView.layer renderInContext:UIGraphicsGetCurrentContext()];
            UIImage *outputImage = UIGraphicsGetImageFromCurrentImageContext();
            UIGraphicsEndImageContext();
            NSData *imgData= UIImageJPEGRepresentation(outputImage, 1.00f);
            //Write file.
        }

我已经在cellForItemAtIndexPath中编写了代码。如果路径中没有图像,则会自动创建。因此,当我第一次启动应用程序时,UI没有响应,因为正在创建许多快照。这减缓了用户交互。有没有解决这个问题?

1 个答案:

答案 0 :(得分:0)

使用drawViewHierarchyInRect代替drawInContext,因为它快得多

请参阅此处的iOS 7示例:https://coderwall.com/p/56wcfq/fast-snapshot-any-views-on-ios-7