ios - 在 iOS 中截屏时我的屏幕不反光(不响应)?

标签 ios uigraphicscontext

我有一个应用程序,我在该应用程序上实时捕获 UIWebView 的屏幕截图并将其发送到服务器。为了开始,我只是更改了 View 的背景颜色并截取了它的屏幕截图。

for (int i = 0; i <15; i++)
    {
        [NSThread sleepUntilDate:[NSDate dateWithTimeIntervalSinceNow:1.0]];
        NSLog(@"Delaying");

         self.view.backgroundColor=[self randomColor];


        CGSize size = CGSizeMake(self.view.frame.size.width,self.view.frame.size.height);

        UIGraphicsBeginImageContextWithOptions(size, NO, [UIScreen mainScreen].scale);

        CGRect rec = CGRectMake(0, 0,self.view.frame.size.width,self.view.frame.size.height);
        [self.view drawViewHierarchyInRect:rec afterScreenUpdates:YES];

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

我就是这样做的。但是屏幕没有更新,它处于一种卡住模式。它仅在使用最后一种颜色拍摄最后一张屏幕截图后更新。谁能帮我找出我哪里出错了?我需要实时截取我们的应用程序屏幕。

最佳答案

[NSThread sleepUntilDate:[NSDate dateWithTimeIntervalSinceNow:1.0]]; 会导致你的应用卡住,因为它会导致主线程休眠,如果你想延迟截图,使用 GCD dispatch_after 函数

for (int i = 0; i <15; i++)
{
    dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(i * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
        //body of your forloop goes here
    });
}

如果你不想立即截取初始屏幕截图,可能需要将延迟添加 i+1

关于ios - 在 iOS 中截屏时我的屏幕不反光(不响应)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35573242/

相关文章:

objective-c - 类扩展中@property(非原子,只读)和@property 之间的区别?

ios - Swift 强制我在调用下一个类的对象时使用 self

ios - watchkit 中的 LongPressGestureRecognizer

ios - 如何在swift 3.0中编写这段代码,特别是如何在swift3中使用宏?

ios - 在动态创建的 UIView 中绘制线条

ios - 将 PDF 转换为 UIImage

ios - 当尝试在 ios 设备上运行 React-Native 应用程序时,为什么所有 RCT...引用 "undefined symbol"错误?

ios - Swift:UIGraphicsBeginImageContextWithOptions 比例因子设置为 0 但未应用

ios - UIGraphicsBeginImageContext drawInRect不准确